Android 手势监听(转)

原文地址:
Android开发之手势滑动(滑动手势监听)详解

/** 记录按下的坐标点(起始点)**/
private float mPosX = 0;
private float mPosY = 0;

/** 记录移动后抬起坐标点(终点)**/
private float mCurPosX = 0;
private float mCurPosY = 0;

View.setOnTouchListener(new OnTouchListener() {

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        // TODO Auto-generated method stub
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                mPosX = event.getX();
                mPosY = event.getY();
                tvTip.setVisibility(View.VISIBLE);
                break;
            case MotionEvent.ACTION_MOVE:
                mCurPosX = event.getX();
                mCurPosY = event.getY();

                break;
            case MotionEvent.ACTION_UP:
                float dx = Math.abs(mCurPosX - mPosX);
                float dy = Math.abs(mCurPosY - mPosY);
                // 横向滑动
                if (dx > dy * 3) {
                    drawerLayout.openDrawer(GravityCompat.START);
                    if (tvTip.getVisibility() == View.VISIBLE)
                        tvTip.setVisibility(INVISIBLE);
                }
                // 纵向滑动
                else if (dx * 3 < dy)
                    tvTip.setVisibility(View.INVISIBLE);
                break;            
        }
        // 返回 true,会消耗掉此事件,系统不再响应滑动手势
        // 返回 false,不消耗掉此事件,系统继续响应滑动手势消息
        return true;
    }

});
posted @ 2022-03-27 10:03  汉学  阅读(123)  评论(0)    收藏  举报