![](/img/trans.png)
[英]how set ClickListener on drawable in Drawable class in android?
[英]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.