Android界面滑动切换:MotionEvent、GestureListener及ViewPager

这篇博客记录一下Android界面滑动切换的几种方式。


1、监听MotionEvent

通过监听MotionEvent来进行滑动切换的原理,实际上是比较MotionEvent初始的坐标及移动后的坐标,
来判断用户是否进行了滑动的操作。

我们看看对应实现中最核心的代码:

public class FirstActivity extends AppCompatActivity {
   
    ..............
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        ...........
        switch (event.getAction() & MotionEvent.ACTION_MASK) {
            case MotionEvent.ACTION_DOWN:
                //每次手指落下时,均记录初始横坐标
                mOrigin = event.getX();
                break;

            case MotionEvent.ACTION_MOVE:
                //手指移动时,记录移动后的横坐标
                float move = event.getX();
                .................
                //当移动距离大于门限后,就可以跳转了
                //这里实现左滑切换,因此要求orgin的横坐标 > move的横坐标
                if ((mOrigin - move > MIN_MOVE_INSTANCE)
                        //此外,还可以判断移动速度是否大于门限
                        //由于手指移动时,会多次触发ACTION_MOVE,因此引入一个标志位,避免多次启动
                        && (speed > SPEED_MIN) && !mAlreadyJump){
                    Log.d("ZJTest", "go to second activity");
                    startActivity(new Intent(this, SecondActivity.class));

                    .....................
                    mAlreadyJump = true;
                }
                break;

            case MotionEvent.ACTION_UP:
                ..................
                //手指离开屏幕后,重置mAlreadyJump
                mAlreadyJump = false;
                break;

            default:
                return super.onTouchEvent(event);
        }

        return true;
    }
}

如果需要计算滑动速度,可以使用VelocityTracker。
其使用方法类似于:

...................
@Override
public boolean onTouchEvent(MotionEvent event) {
    //让VelocityTracker监控event
    add
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值