2014-11-05 97 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()方法。

相关问题