控件的手势事件OnTouchListener()右滑执行,左滑取消

本文介绍了一种在Android中通过监听触屏事件实现左右滑动功能的方法。具体地,利用了MotionEvent的不同动作来判断用户的滑动方向,并通过Log记录了关键节点的状态,方便调试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

view为你想要设置的控件,//TODO注解处写你左滑右滑的逻辑

view.setOnTouchListener(new View.OnTouchListener() {

    float a = 0;
    float b = 0;
    @Override
    public boolean onTouch(View v, MotionEvent e) {
        switch (e.getAction()) {
            case MotionEvent.ACTION_MOVE:
                Log.i("OnTouch","ACTION_MOVE移动");
                break;
            case MotionEvent.ACTION_DOWN:
                Log.i("OnTouch","ACTION_DOWN开始触摸");
                Log.i("OnTouch",e.getX()+"");
                Log.i("OnTouch",e.getY()+"");
                //获得开始触摸时的X值
                a=e.getX();
                break;
            case MotionEvent.ACTION_UP:
                Log.i("OnTouch","ACTION_UP抬起手指");
                Log.i("OnTouch",e.getX()+"");
                Log.i("OnTouch",e.getY()+"");
                //获得抬起手指时的X值
                b=e.getX();
                //a<b证明右滑,否则左滑
                if(a<b){
                    Log.i("OnTouch","-1");
                }else{
                    Log.i("OnTouch","1");
                }
                break;
            case MotionEvent.ACTION_CANCEL:
                Log.i("OnTouch","ACTION_CANCEL手势取消");
                Log.i("OnTouch",e.getX()+"");
                Log.i("OnTouch",e.getY()+"");
                //获得抬起手指时的X值
                b=e.getX();
                //a<b证明右滑,否则左滑
                if(a<b){
                    //TODO 这里执行右滑事件
                    Log.i("OnTouch","右滑");
                }else{
                    //TODO 这里执行左滑事件
                    Log.i("OnTouch","左滑");
                }
                break;
            case MotionEvent.ACTION_OUTSIDE:
                Log.i("OnTouch","ACTION_OUTSIDE超出UI范围");
                Log.i("OnTouch",e.getX()+"");
                Log.i("OnTouch",e.getY()+"");
                break;
            default:
                break;
        }
        return true;
    }
});


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值