Android View Scroller

在继承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();
    }

 



   

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。