【问题标题】:Release button outside the button area释放按钮区域外的按钮
【发布时间】:2015-01-11 02:24:15
【问题描述】:

非常简单的问题:我有一个按钮可以在 ACTION_DOWN 和 ACTION_UP 上改变外观。如果他们按下,将手指放在屏幕上并将手指从按钮上移开,我如何避免触发 ACTION_UP?目前,如果他们按下并将手指从按钮上滑开,它仍然是 DOWN。然后当他们从屏幕上松开手指时,按钮仍然被触发……这不是我想要的行为。

例如,如果您看到 tinder 的主要喜欢/不喜欢按钮 - 一旦手指离开按钮(如果在屏幕上按住),按钮操作就会取消(一旦松开手指)。

谢谢!这是一个简单但具体的问题,我似乎无法在任何地方找到答案。如果 tinder 做到了,我猜它一定是可能的

【问题讨论】:

  • 我认为这绝对是可能的。虽然我想如果你真的想要这个功能。想象一下,用户按下按钮,将手指从按钮上拖开,该按钮的图像将保持不变。现在如果用户想再次点击按钮,按钮是否应该显示 button_up 的 button_down 图像?
  • 用户按下按钮并将手指拖离按钮 -> 一旦手指离开按钮区域,按钮应返回关闭状态(按钮向上图像)。无论如何,tinder 就是这样做的,而且效果很好
  • 好的,临时解决方案,您可以实现onTouchListener() 并使用ACTION_MOVE 来识别视图区域。
  • 您是否尝试过使用 ACTION_CANCEL?

标签: java android button


【解决方案1】:

如果可能,您希望将按钮背景(或 ImageButton 的源图像)设置为 Selector 可绘制对象。如果您这样做,那么所有状态更改都会为您处理。

要回答这个问题,Views 将继续接收触摸事件,直到 View#onTouchEvent() 返回 false 或调用 ACTION_UP 事件,这表明最后一根手指已停止触摸屏幕。因此,如果您不想调用 ACTION_UP,那么您只需在发生您不想要的事件时返回 false。

【讨论】:

  • 不幸的是,在 ACTION_DOWN 和 ACTION_UP 我开始动画来改变外观。所以我没有使用选择器。
  • 其他部分将起作用。在 ACTION_MOVE 事件中检测手指何时超出范围并返回 false。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-24
  • 1970-01-01
相关资源
最近更新 更多