动画期间onClick on View不起作用

时间:2017-03-04 10:22:34

标签: android animation

在处理各种动画的项目时,发现在动画制作时无法点击“视图”。

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 。不幸的是,在过渡期间没有任何作用。

在动画过渡期间是否有可能使对象可点击的解决方案?我真的不想在没有动画的情况下移动物体,因为它会给我带来很多不便。

1 个答案:

答案 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中使用的动画。