【发布时间】:2013-02-25 07:13:46
【问题描述】:
我想让fling 手势检测在我的 Android 应用程序中工作。
我拥有的是一个 GridLayout,其中包含 9 个 ImageViews。来源可以在这里找到:Romain Guys's Grid Layout。
我拍摄的那个文件来自 Romain Guy 的 Photostream application,只是稍作修改。
对于简单的点击情况,我只需为我添加的每个ImageView 设置onClickListener,作为实现View.OnClickListener 的主要activity。实现识别fling 的东西似乎要复杂得多。我想这是因为它可能跨越 views?
-
如果我的活动实施
OnGestureListener我不知道怎么办 将其设置为手势监听器 我的Grid或Image意见 添加。public class SelectFilterActivity extends Activity implements View.OnClickListener, OnGestureListener { ... -
如果我的活动实施
OnTouchListener那我没有onFling方法到override(它有 两个事件作为参数允许我 来确定投掷是否是 值得注意)。public class SelectFilterActivity extends Activity implements View.OnClickListener, OnTouchListener { ... 如果我创建一个自定义
View,例如扩展ImageView的GestureImageView,我不知道如何告诉活动从视图中发生了fling。无论如何,我尝试了这个,当我触摸屏幕时没有调用方法。
我真的只需要一个跨视图工作的具体示例。什么,何时以及如何附上这个listener?我还需要能够检测单击。
// Gesture detection
mGestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() {
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
int dx = (int) (e2.getX() - e1.getX());
// don't accept the fling if it's too short
// as it may conflict with a button push
if (Math.abs(dx) > MAJOR_MOVE && Math.abs(velocityX) > Math.absvelocityY)) {
if (velocityX > 0) {
moveRight();
} else {
moveLeft();
}
return true;
} else {
return false;
}
}
});
是否可以在我的屏幕顶部放置一个透明视图来捕捉弹幕?
如果我选择不从 XML 中 inflate 我的子图像视图,我可以将 GestureDetector 作为构造函数参数传递给我创建的 ImageView 的新子类吗?
这是我试图让fling 检测工作的非常简单的活动:SelectFilterActivity (Adapted from photostream)。
我一直在查看这些来源:
到目前为止,没有什么对我有用,我希望得到一些指导。
【问题讨论】:
-
如何解决这个问题?请回复stackoverflow.com/questions/60464912/…
标签: android listener gesture-recognition