Android动画startOffset使目标视图闪烁而不是动画

时间:2011-01-06 22:15:34

标签: android

我正在尝试创建一个动画,它会将文本视图向左滑动并从右侧再次滑入。从本质上讲,这将与秒表和秒表中使用的文字效果相同。计时器应用程序(sportstracklive是开发人员)。

我可以使用这些动画集中的任何一个独占另一个并且它工作正常,完全符合我的要求。但是一旦我尝试一起使用它们,TextView就会在整个过程中闪烁大约1秒钟。删除startOffset按预期工作。两个动画集同时运行。

这是XML:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:fromXDelta="0%" 
        android:toXDelta="-25%"
        android:fromYDelta="0%" 
        android:toYDelta="0%"
        android:duration="@android:integer/config_shortAnimTime"
    />
    <alpha
        android:interpolator="@android:anim/decelerate_interpolator"
        android:fromAlpha="1.0" 
        android:toAlpha="0.0"
        android:duration="@android:integer/config_shortAnimTime"
    />
    <set>
        <translate
            android:fromXDelta="25%" 
            android:toXDelta="0%"
            android:fromYDelta="0%" 
            android:toYDelta="0%"
            android:startOffset="@android:integer/config_shortAnimTime"
            android:duration="@android:integer/config_shortAnimTime"
        />
        <alpha
            android:interpolator="@android:anim/decelerate_interpolator"
            android:fromAlpha="0.0" 
            android:toAlpha="1.0"
            android:startOffset="@android:integer/config_shortAnimTime"
            android:duration="@android:integer/config_shortAnimTime"
        />
    </set>
</set>

这是运行它的冗长的Java代码:

    AnimationSet mSlideRightToLeft = 
        (AnimationSet) AnimationUtils.loadAnimation(this, R.anim.slide_right_to_left);
    mMyTextView.startAnimation(mSlideRightToLeft);

1 个答案:

答案 0 :(得分:2)

Justinl的评论是正确的。几个月前,我遇到了完全相同的问题。删除其他动画周围的set标签,并保留startOffsets。

接下来删除代码中的动画集,然后执行正常的加载动画:

Animation a = AnimationUtils.loadAnimation(this, R.anim.slide_right_to_left);
mMyTextView.startAnimation(a);

编辑:是的,当有多个动画同时出现时,Android似乎不喜欢这种设置。我想你可能需要为每组动画创建单独的文件,然后通过程序中的AnimationSet配置它们。