Android 判斷手指滑動方向



    private float downX;    //按下時 的X座標
    private float downY;    //按下時 的Y座標
 @Override
    public boolean onTouchEvent(MotionEvent event) {
        //在觸發時回去到起始座標
        float x = event.getX();
        float y = event.getY();
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                //將按下時的座標存儲
                downX = x;
                downY = y;
                break;
            case MotionEvent.ACTION_UP:
                //獲取到距離差
                float dx = x - downX;
                float dy = y - downY;
                //防止是按下也判斷
//                Toast.makeText(this, "r", Toast.LENGTH_SHORT).show();

                if (Math.abs(dx) > 5 && Math.abs(dy) > 5) {
                    //通過距離差判斷方向
                    int orientation = getOrientation(dx, dy);
                    LogUtil.v(TAG,"r");
                    switch (orientation) {
                        case 'r':
                            if (isCanFinish) {
//                                startActivity(new Intent(PlayGameActivity.this, MainActivity.class));
                            }
                            break;
                    }
                }
                break;
        }
        return super.onTouchEvent(event);
    }

    /**
     * 根據距離差判斷 滑動方向
     * @param dx X軸的距離差
     * @param dy Y軸的距離差
     * @return 滑動的方向
     */
    private int getOrientation(float dx, float dy) {
        if (Math.abs(dx) > Math.abs(dy)) {
            //X軸移動
            return dx > 0 ? 'r' : 'l';
        } else {
            //Y軸移動
            return dy > 0 ? 'b' : 't';
        }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章