- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在使用自己构建的自定义按钮时遇到了一些问题。它由一个方框和下方的一条小线组成。
按钮在您按下时垂直向下动画,在您松开时再次向上动画。这是在 CustomButton.class 中处理的:
super.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
buttonContent.startAnimation(rectMoveDown);
colorDown.start();
return false;
}
if (event.getActionMasked() == MotionEvent.ACTION_UP) {
buttonContent.startAnimation(rectMoveUp);
colorUp.start();
return false;
}
return false;
}
});
然后在应用程序的其余部分,我使用此按钮并为其设置一个点击监听器。因此我返回 false(我认为这至少是正确的)因为我不想使用该事件,而是将其传递给层次结构中的 clicklistener。
但是,当我先按下按钮,将手指移到按钮外,然后松开屏幕时,问题就出现了。然后按钮不显示在 ACTION_UP 监听器中完成的动画。
有没有人知道如何解决这个问题?
最佳答案
经过更多测试,我发现了如何解决它!
在阅读文档中的更多内容后,我发现 MotionEvent.ACTION_CANCEL完全符合我的需要:
The current gesture has been aborted. You will not receive any more points in it. You should treat this as an up event, but not perform any action that you normally would.
所以现在我的 TouchListener 看起来像这样(并且工作正常):
super.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getActionMasked()) {
case MotionEvent.ACTION_DOWN:
buttonContent.startAnimation(rectMoveDown);
colorDown.start();
return false;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
buttonContent.startAnimation(rectMoveUp);
colorUp.start();
return false;
}
return false;
}
});
不是我开始用switch-case解决了,而是为了让代码好看才改成的。如您所见,我以完全相同的方式处理 ACTION_UP 和 ACTION_CANCEL。
为了触发 OnClickListener,我到处都返回 false,如果我返回 true,它就不会触发。
关于java - Android:检测按钮外的 ACTION_UP 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31674781/
我想调用函数(如果用户 10 秒内没有触摸另一个 View ,则关闭一个小部件)。可触摸 View 有监听器,例如 @Override public boolean onTouchEvent(Moti
在我的 Fragment 类中,我使用 XML 布局扩展了我的 fragment 。 Layout 是一个简单的 LinearLayout,其中包含一个 ImageView(轮子)。我想获取发生在我的
我正在尝试做一个用户可以移动图像的应用程序......当用户将它移动到某个地方时,应用程序应该做其他事情......有点解锁...... 但问题是当 ACTION_UP 语句不起作用时...有什么建议
我正在尝试制作一款小型 Android 跳跃和奔跑游戏,但我的问题是我无法正确配置事件 ACTION_UP。这是我的代码: public boolean onTouchEvent(MotionEven
我的 OnSwipeImageListener 有问题(实现 OnTouchListener)。我在两个 Activity 中使用 OnSwipeImageListener。 ImageView 上的
我有一个圆圈的代码,它会出现在onTouchListener上并在屏幕上跟随手指。现在我正在努力让它在手指离开屏幕时消失。我很确定 ACTION_UP: 就是我所需要的。我只是不知道如何实现。 这是我
我想在用户将手放在 View 上时做一些工作,并在他松开时停止。我的代码如下: viewHolder.plus.setOnTouchListener(new View.OnTouchListener(
我正在尝试为我的客户 ListView 实现 onTouchListner 以检测滑动。在此代码中,两种切换情况 (ACTION_DOWN ,ACTION_UP) 都有效,但是当 ACTION_UP
这是我的 onTouchEvent(MotionEvent 事件)的代码: @Override public boolean onTouchEvent(MotionEvent event){
在以下代码中,当我将手指从接触处移开时,我无法弄清楚为什么没有触发 ACTION_UP 事件。 public boolean onTouch(View v, MotionEvent event) {
在我的程序中,我让它在手指向下移动时绘制一个矩形,而不是在手指向上移动后删除它。这是为了向用户显示他/她正在使用的值范围作为“猜测”以找到根。但是矩形永远不会出现!但是,如果我在“action_up”
我在使用 MotionEvent.ACTION_UP 时遇到问题在我抬起手指之前调用该事件。 这是我使用的代码。我应该改变什么?感谢您的帮助! public boolean onTouchEvent(
考虑下面的方案(为了更好地理解我的问题)。 如您所见,我正在考虑使用填充包围的 ListView 。现在,如果用户按下 ListView 项,作为我为其提供浅蓝色背景颜色的操作。现在,我的应用程序正在
我创建了一个应用程序,用户必须在其中触摸图像大约 10 秒。所以我注册了 ACTION_DOWN 事件。但是即使用户没有抬起手指,此事件也会在几秒后自动执行 ACTION_UP 事件。这个问题有什么解
如何在MotionEvent.ACTION_MOVE之后调用MotionEvent.ACTION_UP到Button的setOnTouchListener 下面是小 fragment ... slid
我有一个鼠标连接到我的 Android 6.0 平板电脑。我正在尝试在我的 onTouch 中监听鼠标左键和右键的按下和释放事件。它在按下鼠标按钮时工作正常,但在释放鼠标按钮时 getButtonSt
我正在尝试这段代码 https://stackoverflow.com/a/14297097/1907593 运行良好,但在 ACTION_UP 上没有任何反应,我想在 ACTION_UP 上将图像重
我正在尝试使 imageView 在长按时增加尺寸,并在我取消按下后恢复正常。 public class MainActivity extends Activity { private class E
我正在使用触摸事件进行输入。 MotionEvent.ACTION_DOWN 和 MotionEvent.ACTION_UP 均在按下期间调用。它应该只在我的手指离开表面时调用 ACTION_UP。它
我有一个动画,可以在触摸时按下按钮。我希望它能够在用户滚动屏幕时保持按下状态。为此,我制作了一个动画,基本上只是将图像保持在相同的状态以调用 ACTION_MOVE。我的问题是,当我释放按钮时,没有调
我是一名优秀的程序员,十分优秀!