簡體   English   中英

如何在Android中為Drawable設置動畫?

[英]How to animate a Drawable in Android?

我的應用程序中有一個Drawable對象,該對象正在屏幕上移動:

public class MyDrawable extends Drawable {

    @Override
    public void draw(Canvas canvas) {
        // ...
    }
    // ...
}

到目前為止一切正常,但是現在我必須給這個Drawable做動畫了。 我檢查了文檔,看來對我來說最好的選擇是使用AnimationDrawable

我做了這樣的事情:

public void addAnimation() {
    animation = new AnimationDrawable();
    animation.addFrame(resources.getDrawable(R.drawable.anim_0), 100);
    animation.addFrame(resources.getDrawable(R.drawable.anim_1), 100);
    animation.addFrame(resources.getDrawable(R.drawable.anim_2), 100);
    animation.addFrame(resources.getDrawable(R.drawable.anim_3), 100);
    animation.setOneShot(false);
    refreshAnimationBounds();
    animation.start();
}

@Override
public void draw(Canvas canvas) {
    refreshAnimationBounds();
    animation.draw(canvas);
}

發生的是我的原始Drawable正在按預期移動,但我只看到第一幀。 可能是什么問題呢?

refreshAnimationBounds(); 只是刷新我的Drawable對象的邊界(重新Drawable它)。

編輯:

共同點:

public void onWindowFocusChanged(boolean hasFocus) {
    if (hasFocus) {
        animation.start();
    } else {   
        animation.stop();
    }
}

解決方案不起作用。

總的來說,Animation包有很多錯誤。 我回想起動畫沒有啟動時遇到的同樣問題,解決的方法是不像以前那樣在onCreate()啟動動畫,而是在設置所有視圖內容之后在onWindowFocusChanged()啟動動畫。 我本人並沒有擴展AnimationDrawable,但在您的情況下它可能是同一起源。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM