android- 如何在视图中更改 canvas 的颜色?

android- how to change the color of canvas in a view?

我写了一个自定义的 View 来画一个圆(它的 onDraw 函数已被重写来做那个)。

现在我如何通过代码更改圆圈的颜色?(来自将要显示该圆圈的 Activity 函数)

您可以设置一个 setCircleColor 来更改圆的颜色并调用将调用 View onDraw 方法的 invalidate。 您还可以检查 invalidate(Drawable drawable).

public class MyCustomView extends View {

    MyCustomView myView; 

    private Paint myCircle;
    public MyCustomView(Context context){
        super(context);
        initView();
    }

    private void initView(){
        myView = this; 

        myCircle = new Paint();
        myCircle.setColor(0xa300ff00);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        drawCircle(canvas);
    }

    private void drawCircle(Canvas canvas){
        canvas.drawCircle(canvas.getWidth()/2, canvas.getHeight()/2, 10, myCircle);
    }

    public void setCircleColor(int color){
        myCircle.setColor(color);
        myView.invalidate();
    }
}