標籤:android style blog ar color sp on div art
在繼承View控制項重寫控制項功能時,時常會對控制項內容進行滾動,那麼就需要調用View內容移動的兩個方法之一:
View.scrollBy(int x, int y) --> 內容平滑地滾動到目標座標(可看的移動效果)
View.scrollTo(int x, int y) --> 內容馬上滾動到目標座標(瞬移!?)
當滾動時,還需要判斷滾動的內容是否超過顯示界限,此時要調用到兩個方法來擷取滾動的距離(這裡需要注意的是,View是以左上方為座標原點(0,0)),
方法:View.getScrollX() -->擷取水平座標移動距離
View.getScrollY() -->擷取垂直座標移動距離
如:
1.手指向右滑動,而內容向左滾動,View.getScrollX()得到的是負值
2.手指向左滑動,而內容向右滾動,View.getScrollX()得到的是正值
3.手指向下滑動,而內容向上滾動,View.getScrollY()得到的是負值
4.手指向上滑動,而內容向下滾動,View.getScrollY()得到的是正值
簡而言之,就是手指滑動的方向和內容滾動的方向相反,參考ListView 和 HorizontalScrollView 的介面效果便知
在擷取到值後,可以通過(new Scroller()).startScroll(int startX, int startY, int dx, int dy)方法將內容滾動到適當的位置
在View的重寫方法中進行Scroller滾動響應:
@Override public void computeScroll() { if (scroller.computeScrollOffset()) { // 調用這個下面的條件是由於scroller調用了滑動從而使它激發 scrollTo(scroller.getCurrX(), scroller.getCurrY()); invalidate(); return; } super.computeScroll(); }
Android View Scroller