在我的应用程序中,我想为按钮和其他充当按钮的视图添加一个简单的动画。
为此,我将自定义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);
}
这可以正常工作,因为当用户按下按钮时视图被调整为较小的尺寸,并在用户松开手指时返回到原始尺寸。
然而由于某些原因,位于触摸按钮附近的其他按钮也会获得UP事件,因此它们也会获得小动画闪烁。
为什么会这样,更重要的是,我该如何防止这种恼人的行为?
编辑:要清楚。邻居视图也注册到同一个侦听器实例,但我的手指不会触及它们。
答案 0 :(得分:0)
您已注册监听器的视图应该只收到通知,然后使用以下方法。
您可以明确检查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);
}
答案 1 :(得分:0)
问题是在多个视图上使用相同的Animation实例。为每个视图创建单独的实例可以解决问题。