Android实现左右滑动手势退出

使用onTouchListener实现:

private float startX = 0; // 初始的 X 坐标
private int screenEdgeSize; // 判定为滑动侧边的水平范围
private int thresholdDistance = 200; // 滑动超过这个距离才算作完成滑动

private void init() {
    screenEdgeSize = mContext.getResources().getDisplayMetrics().widthPixels / 100;  // 屏幕宽度的1%为触发范围,可相应设置更大范围
    view.setOnTouchListener(new View.OnTouchListener() {
                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    int action = event.getAction();
                    switch (action) {
                        case MotionEvent.ACTION_DOWN:
                            // 记录开始触摸的 X 坐标
                            startX = event.getX();
                            break;
                        case MotionEvent.ACTION_MOVE:
                            // 检测左滑和右滑,基于起始 X 坐标的位置
                            float deltaX = event.getX() - startX;
                            if ((startX < screenEdgeSize && deltaX >= thresholdDistance) ||  // 从左边缘向右滑
                                    (startX > v.getWidth() - screenEdgeSize && -deltaX >= thresholdDistance)) {  // 从右边缘向左滑
                                onBackPressed(); // 此处处理侧滑要执行的内容
                                return true;  // 事件已被处理
                            }
                            break;
                        case MotionEvent.ACTION_UP:
                        case MotionEvent.ACTION_CANCEL:
                            // 触摸结束或取消,进行清理操作
                            startX = 0;
                            break;
                    }
                    return false;  // 触摸事件未被处理完毕,继续传递给其他的触摸事件监听器
                }
            });
}

重写dispatchKeyEvent实现

有时在外部会设置侧滑手势发送KeyEvent.KEYCODE_BACK键值,此时可以处理这一事件。

@Override
public boolean dispatchKeyEvent(@NonNull final KeyEvent event) {
    switch (event.getKeyCode()) {
        case KeyEvent.KEYCODE_BACK:
            if (view != null) {
                onBackPressed(); // 处理侧滑手势
            }
            return true;
        default:
            return super.dispatchKeyEvent(event);
        }
    }

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 左右滑动退出是指在Android应用程序中,用户可以通过左右滑动手势退出当前页面或返回上一个页面。这一功能可以增加用户的操作便利性和流畅度。 实现这一功能需要借助Android中提供的触摸事件处理机制和页面转场动画效果。具体实现方法如下: 1. 首先,在你的应用程序的Activity或Fragment中,监听触摸事件。可以通过重写onTouchEvent方法来实现。 2. 在onTouchEvent方法中,判断手势方向。可以通过获取ACTION_DOWN和ACTION_MOVE事件的坐标位置来进行判断。 3. 如果手势方向为从左向右滑动,可以通过调用finish()方法来直接退出当前页面。 4. 如果手势方向为从右向左滑动,可以通过Intent来打开上一个页面,并使用overridePendingTransition方法来设置页面转场动画效果,实现返回上一个页面的效果。 值得注意的是,在处理手势事件时应考虑用户滑动的距离和速度,以避免误操作。可以设置一个阈值来判断用户的意图,增加用户体验。 另外,为了更好地支持左右滑动退出功能,可以在应用程序的基类中封装这一功能,使得所有页面都可以使用。可以利用抽象类或接口,在基类中定义相关接口和方法,子类只需要实现这些方法即可。 总结起来,通过监听触摸事件,判断手势方向,根据用户的意图实现左右滑动退出或返回的功能。这一功能可以提升用户体验和操作便利性,使应用程序更加友好和流畅。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值