Android 手勢識別向左,右,上,下,滑動的方向

2020-09-28 09:10:32

識別手勢滑動的方向主要是用的     GestureDetector的onFling ,如果想回顧下GestureDetector 可以參考下面的連結地址

GestureDetector 文章

問題也比較簡單下面給出程式碼:

public class FlingActivity extends AppCompatActivity {

    private GestureDetector gestureDetector;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_layout);

        gestureDetector = new GestureDetector(FlingActivity.this,
                new GestureDetector.SimpleOnGestureListener() {
                    /**
                     * e1: 第一次按下的位置
                     * e2   當手離開螢幕 時的位置
                     * velocityX  沿x 軸的速度
                     * velocityY: 沿Y軸方向的速度
                     * @param e1
                     * @param e2
                     * @param velocityX
                     * @param velocityY
                     * @return
                     */
                    @Override
                    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
                                           float velocityY) {
                        // 手勢向上滑動
                        if (e1.getRawY() - e2.getRawY() > 200) {
                            Toast.makeText(FlingActivity.this, "手勢向上滑動", Toast.LENGTH_SHORT).show();
                            return true;
                        }
                        // 手勢向下滑動
                        if (e2.getRawY() - e1.getRawY() > 200) {
                            Toast.makeText(FlingActivity.this, "手勢向下滑動", Toast.LENGTH_SHORT).show();
                            return true;
                        }

                        // 手勢向右滑動
                        if ((e1.getRawX() - e2.getRawX()) > 200) {
                            Toast.makeText(FlingActivity.this, "手勢向右滑動", Toast.LENGTH_SHORT).show();
                            return true;
                        }

                        // 手勢向左邊滑動
                        if ((e2.getRawX() - e1.getRawX()) > 200) {
                            Toast.makeText(FlingActivity.this, "手勢向左邊滑動", Toast.LENGTH_SHORT)
                                    .show();
                            return true; // 消費掉當前事件  不讓當前事件繼續向下傳遞
                        }

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

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

}

 

胡小牧 CSDN認證部落格專家 Android Java 小程式
歲月推動著年華,伴隨著流水的腳步走過春夏秋冬。回想一路走來磕磕絆絆,感謝前輩們的無私奉獻,本文重在共用,歡迎大家轉載,評論,指教,點贊,謝謝,如果您對文章存在疑問,或者和您的文章類似,請私信,----------------期待是心痛的根源,心不動,則不痛。