滑动惯性动画学习

本文章作为学习总结

尊重原创老师英勇青铜5
链接:https://www.jianshu.com/p/f27b0f2c41b5
来源:简书

(九)VelocityTracker 速度追踪

1.在 view.onTouchEvent() 获取 VelocityTracker 对象

2.使用拿到的 VelocityTracker 对象来计算x,y轴的速度

3.在比较恰当及时的时机,将 VelocityTracker 对象释放掉,回收内存

示例:

public class ScrollerActivity extends AppCompatActivity {
    private VelocityTracker velocityTracker;
    private final String TAG = "ScrollerActivity";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_scroller);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        //获取VelocityTracker
        velocityTracker = VelocityTracker.obtain();
        velocityTracker.addMovement(event);
        //计算滑动速度
        velocityTracker.computeCurrentVelocity(1000);//计算速度
        float xVelocity = velocityTracker.getXVelocity();
        float yVelocity = velocityTracker.getYVelocity();
        Log.e(TAG,"&&&-->x = "+xVelocity+"---> y = "+yVelocity);
        return super.onTouchEvent(event);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (null != velocityTracker){
            velocityTracker.clear();//重置
            velocityTracker.recycle();//回收内存
        }
    }
}

直接在Acvitity测试,获取速度的结果,

  • x轴速度,从左向右滑动时,速度为正,从右向左滑动为负;
  • x轴速度,从上向下滑动时,速度为正,从下向上滑动为负;

正负值就是要看滑动的方向和x,y轴方向是否一致


注意:
在使用velocityTracker.getXVelocity(),velocityTracker.getYVelocity()获取速度之前,要先根据设置的单位时间来计算速度。计算公式v = (终点- 起点) /t。计算出来的速度是相对于设置的时间的。

计算出来的速度指的是一段时间内滑过的像素数。

velocityTracker.computeCurrentVelocity(t)

t = 1000,在1000ms内,假设匀速水平滑过了1000px,水平速度就是1000,也就是1000px/1000ms
t = 100,在100ms内,假设匀速水平滑过了100px,水平速度就是100,也就是100px/100ms




 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值