在处理带有各种动画的项目时,发现在动画时无法单击“ View ”。
onClick 仅适用于动画的结束点或开始,但不适用于动画期间。
比方说,我有一个扩展了一些自定义 ImageView 的 Car 对象。我想让汽车在屏幕上移动。目的是让汽车在移动时可以点击,因此在驾驶动画时用户可以点击它来执行一些 Action 。
public class Car extends GraphicObject{
public Car(Context context, int resourceImage, int rawHeight, int rawWidth) {
super(context, resourceImage, rawHeight, rawWidth);
setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
Log.d(TAG, "Works while animated.");
}
});
}
public void startMoving(int duration) {
Animation animation = new TranslateAnimation(
Animation.RELATIVE_TO_SELF, +7f,
Animation.RELATIVE_TO_SELF, -7f,
Animation.RELATIVE_TO_SELF, 0f,
Animation.RELATIVE_TO_SELF, 0f
);
animation.setRepeatCount(Animation.INFINITE);
animation.setRepeatMode(Animation.RESTART);
animation.setDuration(duration);
startAnimation(animation);
}
}
上面的代码仅在汽车应该完成过渡的区域执行onClick。不幸的是,在过渡期间没有任何效果。
是否有任何可能的解决方案使对象在动画过渡期间可点击?我真的不想在没有动画的情况下移动对象,因为这会给我带来很多不便。
最佳答案
感谢pskink的指教,解决方案是使用 Animator 而不是 Animation。 Animator 中解决了与动画期间无法在 View 上执行 onClick 相关的主要问题。这会很有用:
https://android-developers.googleblog.com/2011/05/introducing-viewpropertyanimator.html
https://developer.android.com/guide/topics/graphics/prop-animation.html
请注意:如果您在三星设备上测试您的应用程序并且动画不起作用,请转到开发人员设置并将动画持续时间比例设为最小 1X。在我的例子中,它阻止了查看应用程序中使用的动画。
关于android - 动画期间的 onClick on View 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42594845/