如何为layer-list中的一个项目添加动画效果

14

我有一个图层列表对象,其中包含两个图片,一个是背景图片,另一个是旋转盘图片,它将在背景图片的顶部旋转。也就是说,我将这个图层列表用作线性布局的背景,并且我只想动画化图层列表中的“disk_bg”项。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/
android">
       <item android:drawable="@drawable/player_bg" />

       <item  android:top="166dp" >
             <bitmap  android:id="@+id/disk_bg" android:src="@drawable/cd"
       android:gravity="center" />
       </item>

我使用这个layer-list作为布局背景,请问如何在我的应用程序中对disk_bg层进行动画处理?

你能帮助我吗?非常感谢~

你不理解我的问题吗?还是没有办法做到?

1个回答

2

首先创建2个或更多层列表资源,例如*layer_frame1.xml*和*layer_frame2.xml*,在其中设置你的帧。在您的情况下,假设要更改磁盘项的android:top。

然后创建一个动画列表资源,在其中设置帧的时间和顺序:

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false">

    <item
        android:drawable="@drawable/layer_frame1"
        android:duration="100"/>
    <item
        android:drawable="@drawable/layer_frame2"
        android:duration="100"/>

</animation-list>

将其保存在文件中,即* drawable / player_animation.xml *,并将其设置为View的背景

<View
        android:id="@+id/animation_test"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/player_animation" />

最后在你的代码中指定你希望动画何时开始。
 ((AnimationDrawable)findViewById(R.id.animation_test).getBackground()).start();

注意,不要在onCreate()方法中启动动画。


请注意将animation-list XML文件放在Drawable文件夹中,而不是anim文件夹中。这是一种AnimationDrawable而不是Animation。请参阅http://developer.android.com/guide/topics/resources/animation-resource.html中的帧动画部分。 - Youngjae

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接