2013-12-09 84 views
-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 ...相同的效果。

+0

怎麼樣建立一個可運行並改變 – Triode

+0

內幀整個活動僅用於1個動畫,並會後從未使用過。這就是爲什麼我認爲在新線程中沒有必要。或者你能給我更全面的描述或鏈接? – BeHunter

回答