gpt4 book ai didi

java - 为什么我的 onTouchListener 会被邻居 View 调用?

转载 作者:行者123 更新时间:2023-12-01 05:15:56 24 4
gpt4 key购买 nike

在我的应用程序中,我想向按钮和充当按钮的其他 View 添加简单的动画。

为此,我为所有 View 设置了一个自定义 onTouchListener 并对其调用 startAnimation。

我的 onTouch 方法如下所示:

public boolean onTouch(View v, MotionEvent event) {

// Only show animation when enabled.
if (v.isEnabled()) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
v.startAnimation(shrink);
break;
case MotionEvent.ACTION_UP:
v.startAnimation(grow);
break;
}
}
return v.onTouchEvent(event);
}

这可以正常工作,因为当用户按下按钮时 View 会调整为较小的尺寸,并在用户释放手指时返回到原始尺寸。

但是,由于某种原因,位于触摸按钮附近的其他按钮也会收到 UP 事件,因此它们也会出现小动画闪烁。

这是为什么,更重要的是,我如何防止这种恼人的行为?

编辑:只是为了清楚起见。邻居 View 也注册到同一个监听器实例,但我的手指没有触及它们。

最佳答案

您注册了监听器的 View 应该只收到通知,然后也使用以下方法。

您可以明确检查View的id是什么,然后只启动动画。

public boolean onTouch(View v, MotionEvent event) {

if (v.getId() == R.id.desired_view_id) {
// Only show animation when enabled.
if (v.isEnabled()) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
v.startAnimation(shrink);
break;
case MotionEvent.ACTION_UP:
v.startAnimation(grow);
break;
}
}
}
return v.onTouchEvent(event);
}

关于java - 为什么我的 onTouchListener 会被邻居 View 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11209904/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com