gpt4 book ai didi

android - 如何在android中制作随机帧动画?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:10:44 25 4
gpt4 key购买 nike

我有很多动画图像(帧),比如 image_1、image_2 和 image_3。我想在我的应用程序中使用这个动画图像,所以我尝试了

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

<item
android:drawable="@drawable/image_1"
android:duration="2000"/>
<item
android:drawable="@drawable/image_2"
android:duration="50"/>
<item
android:drawable="@drawable/image_3"
android:duration="50"/>

</animation-list>

并将其设置为我的布局背景

 public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if(hasFocus){

final AnimationDrawable bgDrawable = (AnimationDrawable) ((LinearLayout) findViewById(R.id.animationLayout))
.getBackground();
((LinearLayout) findViewById(R.id.animationLayout))
.post(new Runnable() {

@Override
public void run() {
bgDrawable .start();
}
});

}
}
}

但这表明动画每次都以相同的顺序重复。我想使用这些图像制作一个随机帧动画。我该怎么做?

提前致谢

最佳答案

您可以创建一个新的 AnimationDrawable 而不是将 XML 绑定(bind)到它,只需手动创建框架并将它们添加到 AnimationDrawable

AnimationDrawable animationDrawable = new AnimationDrawable();

animationDrawable.addFrame("You BitmapDrawable for first frame", 2000);
animationDrawable.addFrame("You BitmapDrawable for second frame", 50);
animationDrawable.addFrame("You BitmapDrawable for third frame", 50);

那里有很好的教程:

更新:

您可以使用一个函数来重置 AnimationDrawable 并在您指定的时间随机填充它。这只是一个伪代码,因此请使用正确的语法根据您的需要进行调整:

public AnimationDrawable shuffleFrame(AnimationDrawable ad) {

ad = null;
ad = new AnimationDrawable();

// Create your Drawable frames here
...

// For each Drawable, pick a random one here and add the frame
...
ad.addFrame(Randomly picked frame, duration);


return ad;
}

每次要随机播放帧时调用此函数。

关于android - 如何在android中制作随机帧动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16458027/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com