Android:动画按代码运行,但不是由xml运行

时间:2017-06-06 17:51:45

标签: java android android-animation android-xml

我有一个非常简单的动画:一个imageview必须一直向上然后向下。最初我尝试使用xml:

<set xmlns:android="http://schemas.android.com/apk/res/android"
 android:shareInterpolator="false"
 android:fillAfter="true">
<set
    android:interpolator="@android:anim/linear_interpolator"
    android:repeatCount="-1"
    android:repeatMode="reverse">
    <translate
        android:fromYDelta="0"
        android:toYDelta="10"
        android:duration="300">
    </translate>
</set>

Animation mAnimation= AnimationUtils.loadAnimation(this, R.anim.myanimation);
immagineNemico.startAnimation(mAnimation);

但它并没有奏效:我的imageview并没有上升,只是下降了。所以我读了一个问题的答案,我按代码做了动画:

    immagineNemico.setVisibility(View.VISIBLE);
    TranslateAnimation mAnimation = new TranslateAnimation(
            TranslateAnimation.ABSOLUTE, 0f,
            TranslateAnimation.ABSOLUTE, 0f,
            TranslateAnimation.RELATIVE_TO_PARENT, 0f,
            TranslateAnimation.RELATIVE_TO_PARENT, 0.02f);
    mAnimation.setDuration(300);
    mAnimation.setRepeatCount(-1);
    mAnimation.setRepeatMode(Animation.REVERSE);
    mAnimation.setInterpolator(new LinearInterpolator());
    immagineNemico.setAnimation(mAnimation);

它有效。但为什么xml动画没有用?它们几乎一样!错误在哪里?

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题:动画在按代码设置时有效,但在XML中却没有。简短的回答是Android动画中存在错误/故意混淆的设计,其中一些XML元素被忽略。

这个相关问题的答案首先让我觉得,当通过编程方式和通过XML完成时会有一些工作:https://stackoverflow.com/a/6351812/8003750

我知道这不是最令人满意的答案,但简而言之 - 即使XML是完美的,也有可能无法正常工作的情况。