7

有没有办法设置和启动xml animation-list一个xml属性?我可以按如下方式以编程方式设置和启动它:

    ImageView img = (ImageView) findViewById(R.id.loadingImageView);
    img.setBackgroundResource(R.drawable.loading_animation);
    AnimationDrawable frameAnimation = (AnimationDrawable) img.getBackground();
    frameAnimation.start();

动画列表是:

<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
//...
android:oneshot="false" >

<item
    android:drawable="@drawable/loading_anim_frame_one"
    android:duration="50"/>
 <item
    android:drawable="@drawable/loading_anim_frame_two"
    android:duration="50"/>

等等。

有没有办法只用标记来做到这一点xml,即没有java代码?

如果没有,有没有办法至少将其设置为xml属性,然后以编程方式启动它?

我不能使用单个drawable的旋转,因为动画由几个drawable按顺序组成。

4

3 回答 3

18

您可以将其声明为

<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <scale
        android:duration="700"
        android:fillAfter="false"
        android:fromXScale="0.0"
        android:fromYScale="0.0"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="1.4"
        android:toYScale="1.4" />

    <scale
        android:duration="400"
        android:fillBefore="false"
        android:fromXScale="1.4"
        android:fromYScale="1.4"
        android:pivotX="50%"
        android:pivotY="50%"
        android:startOffset="700"
        android:toXScale="0.8"
        android:toYScale="0.8" />

</set>

只是一个参考。您将不得不更改动画类型和参数。据我所知,您必须使用 java 启动它。

编辑:

是对动画列表有帮助的链接

于 2012-11-26T10:15:16.980 回答
6

我认为您应该首先加载动画:

Animation anim = AnimationUtils.loadAnimation(this, R.anim.animation_name);

img.startAnimation(anim);
于 2012-11-26T09:08:53.350 回答
0

添加带有 alpha 和翻译的示例以供将来参考:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="400"
        android:fromYDelta="-100%p"
        android:toYDelta="0%p" />

    <alpha
        android:duration="800"
        android:fromAlpha="0"
        android:toAlpha="1" />
</set>
于 2019-06-12T09:36:24.877 回答