常見的View滑動方式:
- 通過View本身提供的scrollTo/scrollBy方法實現滑動
- 通過動畫實現View的滑動
- 通過改變View的LayoutParams使View重新布局實現滑動
1.使用scrollTo/scrollBy
scrollBy實現了基于當前位置的相對滑動,scrollTo實現了基于所傳遞參數的絕對滑動,scrollBy實際上也是調用了scrollTo,這點可以查看源碼
scrollTo/scrollBy只能改變View內容的位置,不能改變View在布局中的位置
滑動過程中View內部的兩個屬性mScrollX和mScrollY的改變規則:這兩個屬性可以通過getScrollX和getScrollY來獲得。在滑動過程中mScrollX總等于View的左邊緣和View內容左邊緣在水平方向上的距離,mScrollY總等于View上邊緣和View內容上邊緣在數豎直方向上的距離
2.使用動畫
使用動畫滑動View主要是操作View的translationX和translationY屬性
注意:如果采用屬性動畫,要想兼容3.0以下,需要采用開源動畫庫nineoldandroids,view動畫是對View的影像做操作,并不能真正改變View的位置參數
3.改變布局參數
改變布局參數即改變LayoutParams,重新設置一個View的LayoutParams:
MarginLayoutParams params = (MarginLayoutParams )btn.getLayoutParams(); params.width += 100; params.leftMargin += 100; btn.requestLayout(); //或者 btn.setLayoutParams(params)