在处理各种动画的项目时,发现在动画制作时无法点击“视图”。
onClick 仅适用于动画的结束点或开始,但不适用于。
假设我有一个Car对象扩展了一些自定义ImageView。我想让汽车在屏幕上移动。目标是在移动时使汽车可点击,因此在驾驶动画时,用户可以点击它来执行某些动作。
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 。不幸的是,在过渡期间没有任何作用。
在动画过渡期间是否有可能使对象可点击的解决方案?我真的不想在没有动画的情况下移动物体,因为它会给我带来很多不便。
答案 0 :(得分:1)
感谢pskink的建议,解决方案是使用Animator而不是动画。在Animator中解决了与无法在动画期间执行onClick on View相关的主要问题。这很有用:
https://android-developers.googleblog.com/2011/05/introducing-viewpropertyanimator.html
https://developer.android.com/guide/topics/graphics/prop-animation.html
请注意:如果您在三星设备上测试应用程序并且动画不起作用,请转到开发人员设置并启用动画持续时间比例至少1X。在我的情况下,它阻止查看app中使用的动画。