- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在过去的几个小时里,我一直在崩溃,用 google 搜索了 hell ,但 StackOverflow 或其他地方的例子都没有对我有用,所以就这样吧……
我有一个自定义 View ,扩展了 LinearLayout 并实现了 GestureDetector.OnGestureListener
。
在我的自定义布局中,我有 3 个按钮,每个按钮都有一个点击监听器。我想要的是能够在 View 中随处 Fling 以执行某些操作,而且还能够单击按钮。
我的 onFling 函数工作得很好如果我在 View 内猛扑但没有超过其中一个按钮。如果我滑过其中一个按钮,它在大多数情况下会执行一次点击,或者在某些情况下不会执行任何操作。
这是我的代码的相关部分:
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH) {
return false;
}
// right to left swipe
if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
viewFlipper.setInAnimation(slideLeftIn);
viewFlipper.setOutAnimation(slideLeftOut);
viewFlipper.showNext();
return true;
} else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
viewFlipper.setInAnimation(slideRightIn);
viewFlipper.setOutAnimation(slideRightOut);
viewFlipper.showPrevious();
return true;
}
return false;
}
@Override
public boolean onDown(MotionEvent e) {
// TODO Auto-generated method stub
return true;
}
@Override
public void onLongPress(MotionEvent e) {
// TODO Auto-generated method stub
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onShowPress(MotionEvent e) {
// TODO Auto-generated method stub
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (gestureDetector.onTouchEvent(event)) {
return gestureDetector.onTouchEvent(event);
}
return false;
}
尝试了 return true 的任意组合;返回假;我能想到...将不胜感激任何帮助! :)
谢谢!
最佳答案
这就是最终为我解决的问题......(只有我的问题中修改过的代码)。不确定这是否是最佳解决方案,但它有效:
@Override
public boolean onDown(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onTouchEvent(MotionEvent e) {
return gestureDetector.onTouchEvent(e);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent e) {
return onTouchEvent(e);
}
这将允许滑动手势,甚至在按钮上,也允许简单地点击按钮但是如果你有另一个 View 在这个 View 后面有按钮,有时点击会向后传递并执行 onClick在 View 后面的按钮上。解决方案是将 "android:clickable="true"
添加到前 View 的根布局(LinearLayout、FrameLayout 或其他)。
关于android - 带有按钮的自定义 View 实现 OnGestureListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10935221/
我不明白为什么这段代码不显示任何 Toast。我已经实现了 OnGestureListener 接口(interface)并尝试在用户时显示一些 toast 在 Activity 上滑动。这意味着必须
我正在尝试弄清楚如何添加 OnGestureListener 或其他一些方法来检测屏幕上的触摸拖动到按钮或可以添加到 View 的其他一些小部件。一段时间以来,我一直在试图弄清楚如何做到这一点,但我做
这是布局 - 我在 Activity 中实现了 onGestureLi
根据 android training如果您扩展 GestureDetector.SimpleOnGestureListener,并从 onDown(...) 返回 false 而不是 Gesture
我在安卓系统工作。我有一些功能要通过以下方法完成:- 1. MotionEvent.ACTION_DOWN 2. MotionEvent.ACTION_UP 3. MotionEvent.ACTION
我想检测屏幕 block 中的快速运动。我为此使用以下代码。 public class MyinfoActivity extends Activity implements OnGestureList
我的 onScroll 和 onTouchEvent 被调用,但不是 onDown 方法。事实上,当我在 onDown 中记录 distaceX 时,我会注销其中的几个,第一个总是相对于我上次滚动结束
在过去的几个小时里,我一直在崩溃,用 google 搜索了 hell ,但 StackOverflow 或其他地方的例子都没有对我有用,所以就这样吧…… 我有一个自定义 View ,扩展了 Linea
我正在创建一个需要消耗几乎所有手势的 View 。为此,我创建了一个 ScaleGestureDetector 和一个 GestureDetector。我还创建了一个监听器类,并意识到我可以让它实现我
如何在 Android 中使用 OnGestureListener 检测双指缩放事件? 最佳答案 看看 Android 开发者博客上的这篇文章:http://android-developers.bl
如果 GestureDetector.SimpleOnGestureListener 与 GestureDetector.OnGestureListener 执行相同的操作,但不需要未使用的代码,那么
android.view.GestureDetector.OnGestureListener的onFling()和onScroll()事件有什么区别? link text 最佳答案 onScroll(
我已经在我的 Activity 上实现了接口(interface) GestureDetector.OnGestureListener。它在 Android API 32 上运行良好,但在将 Andr
我正在编写简单的代码来检测所有手势,如滑动、滚动等,并打算实现接口(interface) GestureDetector.OnGestureListener用于覆盖它的方法,但我知道同样可以用 Ges
我正在尝试在我的应用程序的页面之间实现滑动。我目前有 5 个 XML 布局文件,我可以从一个 Activity 访问所有这些文件。底部有五个按钮,代表每个布局,按下时切换到相应的 XML 布局。 我曾
我正在尝试检测用户何时在 Activity 中向左或向右 Swing 。目前我正在使用 OnGestureListener 和方法 onFling()我的问题是我没有找到一种很好的检测方法。 我想要一
我在使用 Android onGestureListener 时遇到一些问题,我有 3 个线性布局在线性布局中水平并排放置,线性布局位置设置为中间布局 onCreate,中间布局还包含一个 ListV
我在 Activity 上创建了一个手势 Listener,效果很好: [Activity (Theme = "@android:style/Theme.Holo.Light", Label = "@
在装有 Android 4.0.4 的三星 Galaxy Note 10.1 上,当两根手指放在屏幕上时,GestureDetector 不会触发 OnGestureListener#onScroll
我是一名优秀的程序员,十分优秀!