[已编辑]代码更改。
有一个24帧的图块。 我如何动态地从他们那里制作动画? 我试过这个,但根本没有效果:
ImageView image = (ImageView)findViewById(R.id.imageView);
Bitmap TileSet = BitmapFactory.decodeResource(getResources(), R.drawable.Image);
Bitmap frame = Bitmap.createBitmap(256, 128, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(frame);
for (int i = 10, width, height; i < 24; i++) {
width = i/4;
height = i%4;
try {
Thread.sleep(125);
} catch (InterruptedException e) {
e.printStackTrace();
}
canvas.drawBitmap(TileSet
, new Rect(256 * width, 128 * height
, 256 * (width+1), 128 * (height+1))
, new Rect(0, 0, image.getWidth(), image.getHeight())
, null);
image.setImageBitmap(frame);
}
这个想法是画这个动画1次并永远关闭这个活动。这就是为什么我不能理解如何在这里使用onDraw函数。
[编辑2]
private void startAnimating() {
Bitmap frame;
long beginLoopTime = 0;
for (int i = 0, width, height; i < 32; i++) {
width = i/8;
height = i%8;
while(System.currentTimeMillis() - beginLoopTime < DURATION) {}
frame = Bitmap.createBitmap(TileSet, 256 * width, 128 * height, 256, 128);
final BitmapDrawable temp = new BitmapDrawable(getResources(), frame);
image.post(new Runnable() {
@Override
public void run() {
image.setBackground(temp);
image.invalidate();
}
});
beginLoopTime = System.currentTimeMillis();
}
}
此功能仅绘制最后一帧。 我尝试使用onWindowFocusChanged ......效果相同。
答案 0 :(得分:1)
您可以使用xml创建帧动画并在活动中加载动画。或者创建一个runnable并在UI线程中运行它。
See this link to get the basic Idea about frame animation in android.