android-studio - 未调用 Android Studio OnFling 事件
问题描述
我试图向我的应用程序添加滑动控件。该应用程序是全屏和横向模式。我想检测一个只有画布的活动的滑动。我试过自己做,但没有奏效。我看了一个教程,但这个更整洁的工作。它正在调用其他函数,但 onFling 不起作用。这是我的手势监听器
public class GestureListener extends GestureDetector.SimpleOnGestureListener {
private static final int SWIPE_THRESHOLD = 100;
private static final int SWIPE_VELOCITY_THRESHOLD = 100;
@Override
public boolean onDown(MotionEvent e) {
return true;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
boolean result = false;
try {
float diffY = e2.getY() - e1.getY();
float diffX = e2.getX() - e1.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();
}
result = true;
}
}
else if (Math.abs(diffY) > SWIPE_THRESHOLD && Math.abs(velocityY) > SWIPE_VELOCITY_THRESHOLD) {
if (diffY > 0) {
onSwipeBottom();
} else {
onSwipeTop();
}
result = true;
}
} catch (Exception exception) {
exception.printStackTrace();
}
return result;
}
public void onSwipeRight() {
}
public void onSwipeLeft() {
}
public void onSwipeTop() {
}
public void onSwipeBottom() {
}
}
那是我的活动
` 私有 GestureDetector mDetector;
public Game(Context context) {
super(context);
SurfaceHolder surfaceHolder = getHolder();
surfaceHolder.addCallback(this);
gameLoop = new Loop(this, surfaceHolder);
GestureListener gestureListener = new GestureListener();
mDetector = new GestureDetector(context, gestureListener);
setFocusable(true);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
mDetector.onTouchEvent(event);
return super.onTouchEvent(event);
}
`
解决方案
推荐阅读
- mongodb - Mongodump 有索引、集合但没有文档
- kernel - 希望在有人删除我的过滤器时收到通知
- iccube - 下载/导出表格时如何保持格式/顺序
- excel - 有没有办法用单元格控制平均函数的起点和范围
- airflow - 日志中两次执行操作员的气流:执行日期不同
- r - 如何使用 walk() 或 walk2() 保存临时文件/.RData 文件
- javascript - 无法从触控板听到“touchstart”、“touchend”事件
- javascript - 有条件地允许 onClick
- php - $_SESSION 名称未定义
- powershell - Zabbix - 项目键不起作用,“远程命令未启用”