-1
[編輯]代碼中的更改。Android中的瓷磚設置動畫
有一個瓷磚與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函數。
[EDITED 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 ...相同的效果。
怎麼樣建立一個可運行並改變 – Triode
內幀整個活動僅用於1個動畫,並會後從未使用過。這就是爲什麼我認爲在新線程中沒有必要。或者你能給我更全面的描述或鏈接? – BeHunter