2012-04-16 75 views
1

我想根據ShapeDrawable類使用一些基於類的特定Shape繪製其內容來編寫動畫DrawableAndroid動畫ShapeDrawable

根據需求,基於Shape的類中的一些值應該更改,並且應該根據這些值進行更改(如某些比例的溫度變化)。整件事是爲Android 2.1編寫的。我發現,撥打invalidateSelf()對我的ShapeDrawable應該沒問題,但我必須爲其提供Drawable.Callback

而問題是,應該在invalidateDrawable(Drawable who)方法中提供什麼Drawable.Callback接口?使用這種方法的一些樣本:

class MyShapeDrawable extends ShapeDrawable implements Drawable.Callback 
{ 
    public void invalidateDrawable(Drawable who) { 
    } 

    public void scheduleDrawable(Drawable who, Runnable what, long when) { 
    } 

    public void unscheduleDrawable(Drawable who, Runnable what) { 
    } 
} 

當我打電話invalidateSelf()ShapeDrawable基於類invalidateDrawable()方法被調用,但我應該在此方法來實現?如何強制我的Shape進行更新和重繪?

回答

0

這是在View.java的android源碼執行...

public void invalidateDrawable(Drawable drawable) { 
    if (verifyDrawable(drawable)) { 
     final Rect dirty = drawable.getBounds(); 
     final int scrollX = mScrollX; 
     final int scrollY = mScrollY; 

     invalidate(dirty.left + scrollX, dirty.top + scrollY, 
       dirty.right + scrollX, dirty.bottom + scrollY); 
    } 
} 
+0

請更詳細說明你的答案。 – 2012-10-21 08:52:21