我想fling在我的Android应用程序中运行手势检测.
我拥有的是GridLayout包含9 ImageView秒的内容.源代码可以在这里找到:Romain Guys的网格布局.
我拿的那个文件来自Romain Guy的Photostream应用程序,并且只是略微适应了.
对于简单的点击情况,我只需要onClickListener为ImageView我添加的每一个设置为activity实现的主要部分View.OnClickListener.实现识别a的东西似乎无比复杂fling.我认为这是因为它可能跨越views?
如果我的活动实现,
OnGestureListener我不知道如何将其设置为我添加Grid的Image视图或视图的手势监听器.
public class SelectFilterActivity extends Activity implements
View.OnClickListener, OnGestureListener { ...
Run Code Online (Sandbox Code Playgroud)如果我的活动实现,
OnTouchListener那么我没有
onFling方法override(它有两个事件作为参数,允许我确定是否值得注意).
public class SelectFilterActivity extends Activity implements
View.OnClickListener, OnTouchListener { ...
Run Code Online (Sandbox Code Playgroud)如果我做了一个自定义View,就像GestureImageView那个扩展ImageView我不知道如何告诉活动fling从视图中发生了.无论如何,我试过这个,当我触摸屏幕时没有调用方法.
我真的只需要一个跨视图的具体例子.什么,何时以及如何附上这个listener?我还需要能够检测单击.
// Gesture detection
mGestureDetector = new …Run Code Online (Sandbox Code Playgroud) 我在ViewFlipper中有一个垂直的ScrollView(实际上是一个自定义的ScrollView,代码如下).除非我在ScrollView上水平滑动以翻转到上一个/下一个视图,否则ViewFlipper工作正常.ScrollView本身可以正常工作.
这是设计.绿色框是ScrollView,它应该是垂直的.

这是ScrollView:
public class SCScrollView extends ScrollView {
private float xDistance, yDistance, lastX, lastY;
GestureDetector gestureDetector = new GestureDetector(new MyGestureDetector());
OnTouchListener gestureListener;
public SCScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
gestureListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (gestureDetector.onTouchEvent(event)) {
return true;
}
return false;
}
};
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
xDistance = yDistance = 0f;
lastX = ev.getX();
lastY = ev.getY();
break;
case MotionEvent.ACTION_MOVE: …Run Code Online (Sandbox Code Playgroud) 我有一个由许多ScrollView组成的Gallery,每个ScrollView占据整个屏幕.问题是ScrollViews的onTouchEvent返回true,因此阻止DOM中的任何其他视图处理相同的事件(在ScrollView级别处理后被吞下).因此,Gallery不再滚动.另一方面,如果我像这样重写onTouchEvent:
@Override
public boolean onTouchEvent(MotionEvent ev) {
super.onTouchEvent(ev);
return false; // <<<<<<<<<<<<<<<<<
}
Run Code Online (Sandbox Code Playgroud)
然后Gallery接收其on事件进行处理,但SrollView不再滚动.无论哪种方式,你输了!或者你呢?
问题听起来很令人费解,但我相信如果你在过去偶然发现它会立即认出它,因为它是一个非常可怕的人!
谢谢