更好的方式来实现flipbook风格的动画?

时间:2011-07-28 02:57:56

标签: android

我使用handler只是以延迟的间隔发布,循环浏览一系列可绘制资源并相应地设置imageResource。它工作得很好,但“动画”并不是非常流畅。有没有其他方法来实现这种类型的动画,我只是像翻页一样翻阅图像?

2 个答案:

答案 0 :(得分:0)

请看下面的内容: http://code.google.com/p/android-page-curl/

我认为此页面卷曲效果很棒。

答案 1 :(得分:0)

你想要的是Android中的“帧动画”。在屏幕上显示每个图像和时间是在XML文件中定义的。有关详细信息,请参阅以下链接:

http://developer.android.com/guide/topics/resources/animation-resource.html#Frame

以下是我在一个快速测试应用程序中运行的方法:

    setContentView(R.layout.main);
    ImageView rocketImage = (ImageView) findViewById(R.id.imageView1);
    rocketImage.setBackgroundResource(R.drawable.jena);
    rocketAnimation = (AnimationDrawable) rocketImage.getBackground();

然后,在我的drawable文件夹中,我有jena.xml:

    <animation-list xmlns:android="http://schemas.android.com/apk/res/android"
     android:oneshot="false">
    <item android:drawable="@drawable/jenaveve0000" android:duration="500"/>
<item android:drawable="@drawable/jenaveve0001" android:duration="500"/>
<item android:drawable="@drawable/jenaveve0002" android:duration="500"/>
<item android:drawable="@drawable/jenaveve0003" android:duration="500"/>
<item android:drawable="@drawable/jenaveve0004" android:duration="500"/>
<item android:drawable="@drawable/jenaveve0005" android:duration="500"/>
<item android:drawable="@drawable/jenaveve0006" android:duration="500"/>
<item android:drawable="@drawable/jenaveve0007" android:duration="500"/>
<item android:drawable="@drawable/jenaveve0008" android:duration="500"/>
<item android:drawable="@drawable/jenaveve0031" android:duration="500"/>
<item android:drawable="@drawable/jenaveve0032" android:duration="500"/>
<item android:drawable="@drawable/jenaveve0033" android:duration="500"/>
<item android:drawable="@drawable/jenaveve0034" android:duration="500"/>
<item android:drawable="@drawable/jenaveve0035" android:duration="500"/>
<item android:drawable="@drawable/jenaveve0036" android:duration="500"/>
</animation-list>

要启动动画,我有:

public void onWindowFocusChanged(boolean hasFocus) {
    // TODO Auto-generated method stub
    super.onWindowFocusChanged(hasFocus);
    rocketAnimation.start();