在网格视图上实施滑动手势 [英] Implement the swipe gesture on grid view

查看:108
本文介绍了在网格视图上实施滑动手势的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在 GridView 上实施滑动手势。例如:
:我有3张3格 GridView 9张图片,当我将手指滑动到图片时,我想删除图片
可以帮助我,如果有的话任何想法。

谢谢

解决方案

这就是例子,在我身上

  public class GameActivity扩展AppCompatActivity {

private GestureDetectorCompat检测器;

@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);
返回false;
}
});
}

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

class MyGestureListener继承了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;

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

float diffY = event2.getY() - event1.getY();
float diffX = event2.getX() - event1.getX(); (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();
}
}
}
返回true;



private void onSwipeLeft(){

}

private void onSwipeRight(){
)b

$ b private void onSwipeTop(){

}

private void onSwipeBottom(){

}
}


i want to implement the swipe gesture on GridView . for example: i have 3*3 GridView with 9 images when i swipe my finger to the images i want to delete the images that swiped can somebody help me if you have any idea.

Thanks

解决方案

This is example, that work on me

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() {

    }
}

这篇关于在网格视图上实施滑动手势的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆