翻译X动画无论持续时间如何都会立即结束

时间:2014-05-25 10:57:45

标签: android android-animation

我在整个视图的点击监听器中有以下代码:

    float newPosition = value / MAX_VALUE * scaleWidth; // value is float
    ObjectAnimator a = ObjectAnimator.ofFloat(indicatorView, "translationX", indicatorView.getTranslationX(), newPosition);
    a.setDuration(2000);
    a.addListener(new Animator.AnimatorListener() {

        @Override
        public void onAnimationStart(Animator animation) {
            Log.e("test", "start");
        }

        @Override
        public void onAnimationEnd(Animator animation) {
            Log.e("test", "end");
        }

        @Override
        public void onAnimationCancel(Animator animation) {
            Log.e("test", "cancel");
        }

        @Override
        public void onAnimationRepeat(Animator animation) {
            Log.e("test", "repeat");
        }
    });
    a.start();

无论我做什么,无论我设置的持续时间如何,都不会播放动画,移动的视图只会移动到新的(正确的)位置。日志输出如下所示:

05-25 12:46:22.477: ERROR/test(2266): start
05-25 12:46:22.477: ERROR/test(2266): end

表示动画在启动后立即完成。我在4.4.2设备上测试代码,清单中的min和目标SDK是19.我没有使用NineOldAndroids。我尝试按照本教程进行操作:http://cogitolearning.co.uk/?p=1290,它显然似乎在起作用。

我对这行代码有同样的问题:

indicatorView.animate().translationX(newPosition).setDuration(2000).start();

这是布局XML:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/scale"
    android:layout_marginLeft="50dp"
    android:layout_marginTop="100dp"
    android:layout_width="500dp"
    android:layout_height="75dp"
    android:background="@android:color/holo_red_light">

    <ImageView
        android:id="@+id/indicator"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/indicator" />

</FrameLayout>

任何帮助?

编辑:我下载了上面提到的项目并且已经构建完成,但似乎没有任何动画可供我使用,互联网上也没有找到任何代码片段。在我看来,我的手机出了问题。

1 个答案:

答案 0 :(得分:5)

我现在感觉很蠢。事实证明我在Android Developer Settings中禁用了动画。我现在做的是再次启用它们(通过将比例设置为1x)并重新启动手机 - 它可以工作。 奇怪的是,旧的&#39;查看动画没有任何问题,并且“新的”#39;那些(来自API级别11)没有。咦?