android开发: 我有一个控件要监听左滑和右滑给点示例代码
下面是一个示例代码,演示如何在Android开发中监听左滑和右滑的操作:
import android.content.Context;
import android.util.AttributeSet;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
public class SwipeView extends View {
private GestureDetector gestureDetector;
public SwipeView(Context context) {
super(context);
init(context);
}
public SwipeView(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
public SwipeView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context);
}
private void init(Context context) {
gestureDetector = new GestureDetector(context, new SwipeGestureListener());
setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}
});
}
private class SwipeGestureListener extends GestureDetector.SimpleOnGestureListener {
private static final int SWIPE_THRESHOLD = 100;
private static final int SWIPE_VELOCITY_THRESHOLD = 100;
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
boolean result = false;
try {
float diffX = e2.getX() - e1.getX();
float diffY = e2.getY() - e1.getY();
if (Math.abs(diffX) > Math.abs(diffY)) {
if (Math.abs(diffX) > SWIPE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) {
if (diffX > 0) {
// 右滑逻辑
result = true;
} else {
// 左滑逻辑
result = true;
}
}
}
} catch (Exception exception) {
exception.printStackTrace();
}
return result;
}
}
}
上述代码中,我们自定义了一个SwipeView控件,通过GestureDetector来识别左滑和右滑的手势操作。在init()方法中,我们将GestureDetector和OnTouchListener绑定到控件上。SwipeGestureListener类继承自GestureDetector.SimpleOnGestureListener,重写了onFling()方法来判断手势的滑动方向。在onFling()方法中,我们可以添加需要执行的左滑和右滑逻辑
原文地址: https://www.cveoy.top/t/topic/iJRB 著作权归作者所有。请勿转载和采集!