Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在网格视图上实现滑动手势_Android_Gridview_Swipe Gesture - Fatal编程技术网

Android 在网格视图上实现滑动手势

Android 在网格视图上实现滑动手势,android,gridview,swipe-gesture,Android,Gridview,Swipe Gesture,我想在GridView上执行滑动手势。 例如:当我用手指滑动要删除的图像时,我有3*3GridView和9个图像 如果你有什么想法,有人能帮我吗 谢谢这是一个对我有用的例子 public class GameActivity extends AppCompatActivity { private GestureDetectorCompat detector; @Override protected void onCreate(Bundle savedInstanceS

我想在GridView上执行滑动手势。 例如:当我用手指滑动要删除的图像时,我有3*3GridView和9个图像 如果你有什么想法,有人能帮我吗


谢谢

这是一个对我有用的例子

public class GameActivity extends AppCompatActivity {

    private GestureDetectorCompat detector;

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

        detector = new GestureDetectorCompat(this, new MyGestureListener());

        GridView board = (GridView) findViewById(R.id.board);
        board.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                detector.onTouchEvent(event);
                return false;
            }
        });
    }

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

    class MyGestureListener extends GestureDetector.SimpleOnGestureListener {

        private static final int SWIPE_THRESHOLD = 100;
        private static final int SWIPE_VELOCITY_THRESHOLD = 100;

        @Override
        public boolean onDown(MotionEvent event) {
            return true;
        }

        @Override
        public boolean onFling(MotionEvent event1, MotionEvent event2,
                               float velocityX, float velocityY) {

            float diffY = event2.getY() - event1.getY();
            float diffX = event2.getX() - event1.getX();
            if (Math.abs(diffX) > Math.abs(diffY)) {
                if (Math.abs(diffX) > SWIPE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) {
                    if (diffX > 0) {
                        onSwipeRight();
                    } else {
                        onSwipeLeft();
                    }
                }
            } else {
                if (Math.abs(diffY) > SWIPE_THRESHOLD && Math.abs(velocityY) > SWIPE_VELOCITY_THRESHOLD) {
                    if (diffY > 0) {
                        onSwipeBottom();
                    } else {
                        onSwipeTop();
                    }
                }
            }
            return true;
        }        
    }

    private void onSwipeLeft() {

    }

    private void onSwipeRight() {

    }

    private void onSwipeTop() {

    }

    private void onSwipeBottom() {

    }
}

尝试使用
手势检测器
来查看
网格视图
onTouch()
你能给我举个例子吗。。。。谢谢你应该得到更多的选票。谢谢你举个很好的例子你能解释一下你在这里做了什么吗?它今天仍然有效吗?