手势 双击 拖动事件

public class MyButton extends Button {
    private GestureDetector mGesture;
    interface onDoubleClick{
        public void onDoubleClick(View v);
    }
    private onDoubleClick onDoubleClickLisnter;

    public void setOnDoubleClickLisnter(onDoubleClick onDoubleClickLisnter) {
        this.onDoubleClickLisnter = onDoubleClickLisnter;
    }

    public MyButton(Context context) {
        super(context);
    }

    public MyButton(Context context, AttributeSet attrs) {
        super(context, attrs);
        mGesture=new GestureDetector(context,new GestureDetector.SimpleOnGestureListener(){
        // 双击事件
            @Override
            public boolean onDoubleTap(MotionEvent e) {
                if (onDoubleClickLisnter!=null){
                    onDoubleClickLisnter.onDoubleClick(MyButton.this);
                }

                Log.d("ontouch", "点了两下 ");
                return true;
            }
//                                        拖动停止后才滑动
            @Override
            public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
               if (Math.abs(e2.getX()-e1.getX())>50){
                   setTranslationX(getTranslationX()+e2.getX()-e1.getX());
                   ObjectAnimator.ofFloat(MyButton.this,"translationX",getTranslationX(),getTranslationX()+e2.getX()-e1.getX()).setDuration(3000).start();
                   return true;
               }

                return super.onFling(e1, e2, velocityX, velocityY);
            }

//                                       边拖动边滑动
            @Override
            public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
                setTranslationX(getTranslationX()+e2.getX() - e1.getX());
                setTranslationY(getTranslationY()+e2.getY()-e1.getY());
                return super.onScroll(e1, e2, distanceX, distanceY);
            }

        });

    }

    public MyButton(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    public boolean dispatchTouchEvent(MotionEvent event) {
        return super.dispatchTouchEvent(event);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        mGesture.onTouchEvent(event);
        return super.onTouchEvent(event);
    }
}

onFling的效果图
这里写图片描述
onScroll的效果图
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值