2014-11-05 88 views
1

我的類定義如下:在對象上如何在運行時更改自定義視圖顏色?

public class Island extends View { 
    private ShapeDrawable mDrawable; 

    public Island(Context context) { 
     super(context); 
     int width = 50; 
     int height = 50; 

     mDrawable = new ShapeDrawable(new OvalShape()); 
     mDrawable.getPaint().setColor(0xff74AC23); 
     mDrawable.setBounds(0, 0, width, height); 
    } 

    public void change() { 
     mDrawable.getPaint().setColor(Color.BLACK); 
    } 

    protected void onDraw(Canvas canvas) { 
     mDrawable.draw(canvas); 
    } 

爲什麼不會形狀改變顏色時,我呼籲變化()?謝謝。

回答

4

需要調用無效所以認爲知道它需要重繪

+0

就是這樣,謝謝。之前,我試圖在drawable本身調用invalidateself(),但在View上調用invalidate()完美運行。謝謝。 – whoknows 2014-11-05 20:24:32

0

假設你的目標是, 島島=新洲(背景);

要更新您的視圖,您可以調用island.onDraw() 或 island.invalidate();

如果您從另一個線程更改此屬性,則可以使用postInvalidate()方法。