zoukankan      html  css  js  c++  java
  • 用 Scroller 实现 Fling 惯性滑动

    mScroller.fling(startX, startY, velocityX, velocityY, minX, maxX, minY, maxY);
    
    startX
    startY  开始位置
    
    velocityX
    velocityY  //滑动的速度, 像素/s
    
    minX
    maxX   最小的值
    
    minY
    maxY   最大的值,最后的结果不会超过这个值
    
    //其他的使用方法和startScroll一样,在computeScroll 方法中获取实时的x,y值。
    
    注意这里和 startScroll 不一样的地方, fling 最后的值 是
    mMinX <= mFinalX <= mMaxX mMinY <= mFinalY <= mMaxY



    一些系统的预订值: ViewConfiguration configuration
    = ViewConfiguration.get(context); int mTouchSlop = configuration.getScaledTouchSlop(); // 移动的距离大于这个像素值的时候,会认为是在滑动。 小米1上是24个像素 int mMinimumVelocity = configuration.getScaledMinimumFlingVelocity(); //最小的速度。小米1上是 75像素/s int mMaximumVelocity = configuration.getScaledMaximumFlingVelocity(); //最大的速度。小米1上是 6000像素/s 如何获取 velocityX、velocityY值 1. 使用 android.view.GestureDetector; 在 OnGestureListener 中有 onFling 方法, 可以得到速度值: public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) 2. 使用 VelocityTracker mVelocityTracker = VelocityTracker.obtain(); // 初始化 mVelocityTracker.addMovement(ev); // 将 onTouchEvent 中的每一个事件加入 mVelocityTracker.recycle(); // 在 ACTION_UP 和 ACTION_CANCEL 中 销毁 // 在 ACTION_UP 事件中计算 velocityX 和 velocityY velocityTracker.computeCurrentVelocity(1000, mMaximumVelocity); // 第一个参数是单位,1表示 "像素/ms" 1000表示 "像素/s" 第二个参数是最大值。耗时较大,需要时才调用. int initialVelocity = (int) velocityTracker.getYVelocity(mActivePointerId); // 获取速度 if (Math.abs(initialVelocity) > mMinimumVelocity) { // 和系统预设的最小值比较 fling(-initialVelocity); }
  • 相关阅读:
    MySql 5.6以下版本自定义函数返回VARCHAR的中文问题
    解决Tomcat的java.lang.IllegalStateException: Cannot create a session after the response has been committed问题
    Lucene自定义规则范围查询
    JS吊炸天的代码
    又是正则
    JS显示指定字符数,避免一个中文两个字符的情况
    PostgreSql查看当前表的主外键关系
    java基础(个人学习笔记) A
    Elasticsearch5.5.1插件开发指南
    ElasticSearch5.5.1插件分类
  • 原文地址:https://www.cnblogs.com/zijianlu/p/3006967.html
Copyright © 2011-2022 走看看