1. VelocityTracker类:用于跟踪触屏事件的速度,通常使用VelocityTracker的步骤如下:

    • static VelocityTracker obtain():获取一个VelocityTracker实例
    • void addMovement(MotionEvent event):添加motion event到VelocityTracker实例中
    • void computeCurrentVelocity(int units):计算当前的速度,units用于设置速度单位,units为1表示每毫秒多少像素,units为1000表示每秒多少像素
  2. Scroller类封装了滚动,用于计算view滚动的位置,可以设置滚动发生的时长,滚动结束时computeScrollOffset函数会返回false,否则返回true。
  3. 常用函数:
    • 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的值.往右滚动返回负值
  4. View与滚动相关的函数: 
    • public void computeScroll():是View类的一个空函数,父容器需要更新子view的位置时调用
    • public void scrollTo(int x,int y):滚动view到指定位置,这个位置是相对于view的初始位置的距离.
    • public void scrollBy(int x,int y):滚动view的距离,往右和往下是负值
  5. 使用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();
    }
    }

最新文章

  1. Tomcat server.xml配置示例
  2. linux编译中的常见问题
  3. Python标准库:内置函数classmethod(function)
  4. 利用RTE创建自定义软件安装包(一)
  5. jQuery插件开发方法
  6. 如何在VC中显示透明背景位图
  7. cocos2d_x_05_Box2D物理引擎
  8. java 分解质因数 基础增强
  9. 通信机制-TCP/IP、Http、Socket的区别
  10. HDU 1069 Monkey and Banana(DP——最大递减子序列)
  11. python入门(9)字符串和编码
  12. 搭建SpringMVC+Hibernate
  13. CF821C Okabe and Boxes
  14. 关于Struts2有时候出现的莫名其妙的错误
  15. 分析现有 WPF / Windows Forms 程序能否顺利迁移到 .NET Core 3.0(使用 .NET Core 3.0 Desktop API Analyzer )
  16. 20145302张薇《Java程序设计》第七周学习总结
  17. zoj2901【DP&#183;二进制优化】
  18. 新建mvc项目
  19. Simics 破解 转
  20. 算法之--回溯法-迷宫问题【python实现】

热门文章

  1. linux 下Redis 5.0主从复制(一主二从)哨兵模式的搭建
  2. asp.net 后台给前台控件添加及设置属性
  3. stackoverflow 加载特慢解决方案,配置 hosts 屏蔽速度慢的第三方 API
  4. MySQL(十一)
  5. Guitar Pro 的双十一特惠活动,正在如火如荼进行中...
  6. 扩大缩小Linux物理分区大小
  7. WebAssembly学习(二):Windows10下WebAssembly C/C++编译环境的搭建与Hello World尝试
  8. BZOJ 4942 NOI2017 整数 (压位+线段树)
  9. [luogu2059 JLOI2013] 卡牌游戏 (概率dp)
  10. [luogu1772 ZJOI2006] 物流运输 (最短路 线性dp)