我试图找出如何以良好的帧速率进行png逐帧动画......
我有一堆png(可能是1500 png姿势),我需要逐个播放它们(就像一个会说话的应用程序,以汤姆猫为例)
我已经尝试过SurfaceView,普通View,AnimationDrawable以及ImageView(用一个线程设置后台睡眠(33)[30fps]),但这些方法都没有比tom更好的帧速率坏CPU电话上的猫(如HTC Desire A)。
还可以说我已经添加了选项来为图像设置SampleSize,以防它需要更多的内存或处理速度。
我认为独特的方式是加载一定数量的png,在SurfaceView上绘制,同时播放更多png并回收其他位图......
任何人都可以帮助我吗?至少有一些代码?
谢谢!
答案 0 :(得分:0)
在这里你去试试...... :) 在ur values文件夹
上创建这样的XML文件<?xml version="1.0" encoding="utf-8"?>
<resources>
<array name="frames">
<item>@drawable/pak1_1</item>
<item>@drawable/pak1_2</item>
<item>@drawable/pak1_3</item>
<item>@drawable/pak1_4</item>
<item>@drawable/pak1_5</item>
</array>
</resources>
现在试试这段代码:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Resources res = getResources();
TypedArray FrameImages = res.obtainTypedArray(R.array.frames);
animation = new AnimationDrawable();
for (int i = 0; i < 1500; i++) {
Drawable drawable = FrameImages.getDrawable(i);
animation.addFrame(drawable, 33);
}
animation.setOneShot(false);
ImageView imageAnim = (ImageView) findViewById(R.id.img);
imageAnim.setBackgroundDrawable(animation);
// run the start() method later on the UI thread
imageAnim.post(new Starter());
}
class Starter implements Runnable {
public void run() {
animation.start();
}
}