android - 动画期间的 onClick on View 不起作用

标签 android animation

在处理带有各种动画的项目时,发现在动画时无法单击“ 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/

相关文章:

java - 我不明白这段代码

ios - 具有 Spring 效果的旋转动画

javascript - 延迟/动画滚动呈现

jquery - 将页面滚动连接到动画涉及哪些 jquery/css 方法和属性?

CSS @keyframes 动画在悬停时不断闪烁

java - 在 Eclipse 调试器中运行的导出、签名的 apk 和版本之间的差异?导致问题的可序列化类

java - WebView 和 SSLSocket

java - Android开发中的精确计算,Java?

android - 使用 Intent 获取蓝牙设置连接和配对屏幕?

javascript - 递归requestAnimationFrame() javascript循环直接跳到最后