首页 > 代码库 > Android Scroller类和VelocityTracker类
Android Scroller类和VelocityTracker类
- Scroller类
- Scroller类封装了滚动,用于计算view滚动的位置,可以设置滚动发生的时长,滚动结束时computeScrollOffset函数会返回false,否则返回true。
- 常用函数:
- public void startScroll(int startX,int startY,int dx,int dy,int duration):设置滚动的起点坐标,横轴和纵轴滚动的距离以及滚动的时间。要注意的是dx<0是往右滚动,dy<0是往下滚动
- public boolean computeScrollOffset():返回true说明滚动尚未完成,false就说明滚动完成了,该函数通常放在View.computeScroll函数中用于判断滚动是否结束。在duration时间内一直返回false
- pubilc final int getCurrX():相对于滚动开始点的横轴距离,即相对于startX的距离,注意不是相对于屏幕左上角。在滚动未完成时这个值一直在变。
- public final int getFinalX():返回滚动的距离,即dx的值.往右滚动返回负值
- View与滚动相关的函数:
- public void computeScroll():是View类的一个空函数,在父容器重画自己的孩子时,会调用孩子的computeScroll方法
- public void scrollTo(int x,int y):滚动view到指定位置,这个位置是相对于view的初始位置的距离.
- public void scrollBy(int x,int y):滚动view的距离,往右和往下是负值
- 使用Scroller类自定义ViewGroup的实例:
public class MyViewGroup extends LinearLayout { private boolean recover=true; Scroller mScroller=null; public MyViewGroup(Context context, AttributeSet attrs) { super(context, attrs); mScroller=new Scroller(context); }//实际发生滚动的函数 @Override public void computeScroll() { if (mScroller.computeScrollOffset()) { int deltX=mScroller.getCurrX(); int deltY=mScroller.getCurrY(); scrollTo(deltX, deltY); postInvalidate(); } } public void beginScroll(){ if (!recover) { mScroller.startScroll(0, 0, 0, 0, 10000); recover = true; } else { mScroller.startScroll(0, 0, -100, -100, 10000); recover = false; } invalidate(); }}
Android Scroller类和VelocityTracker类
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。