Android 如何根据数据更改更新customview?

Android 如何根据数据更改更新customview?,android,android-view,Android,Android View,目前在我的android应用程序中,我用两种不同颜色的8个矩形块创建了一个自定义视图。我想做的是让8个矩形根据数组的变化来更新颜色。现在,我的代码可以创建一个静态视图,如何对其进行动态更改,另一个类可以操作这个视图类对象 public class SampleCanvasActivity extends View { Paint paint = new Paint(); int array[] = new int[8]; public SampleCanvasActiv

目前在我的android应用程序中,我用两种不同颜色的8个矩形块创建了一个自定义视图。我想做的是让8个矩形根据数组的变化来更新颜色。现在,我的代码可以创建一个静态视图,如何对其进行动态更改,另一个类可以操作这个视图类对象

public class SampleCanvasActivity extends View {
    Paint paint = new Paint();
    int array[] = new int[8];

    public SampleCanvasActivity(Context context,AttributeSet attributeSet) {
        super(context,attributeSet);
    }

    @Override
    public void onDraw(Canvas canvas) {
        /*
        paint.setColor(Color.BLACK);
        paint.setStrokeWidth(3);
        canvas.drawRect(130, 130, 180, 180, paint);
        paint.setStrokeWidth(0);
        paint.setColor(Color.CYAN);
        canvas.drawRect(133, 160, 177, 177, paint );
        paint.setColor(Color.YELLOW);
        canvas.drawRect(133, 133, 177, 160, paint );
        */

        for(int i=0;i<array.length;i++){
            array[i] = 0;
        }
        array[7] = 1;

        int left = 50; // initial start position of rectangles (50 pixels from left)
        int top = 50; // 50 pixels from the top
        int width = 50;
        int height = 50;
        for (int row = 0; row < 2; row++) { // draw 2 rows
            left = 50;
            for(int col = 0; col < 4; col++) { // draw 4 columns
                int id = row*4 + col;
                if(array[id]==0)
                paint.setColor(Color.parseColor("#CD5C5C"));
                else
                paint.setColor(Color.CYAN);
                canvas.drawRect(left, top, left+width, top+height, paint);
                left = (left + width + 10); // set new left co-ordinate + 10 pixel gap
                // Do other things here
                // i.e. change colour
            }
            top = top + height + 10; // move to new row by changing the top co-ordinate
        }

    }
}
公共类SampleCanvasActivity扩展视图{
油漆=新油漆();
int数组[]=新的int[8];
公共抽样活动(上下文、属性集、属性集){
super(上下文、属性集);
}
@凌驾
公共空白onDraw(画布){
/*
油漆。设置颜色(颜色。黑色);
油漆。设置行程宽度(3);
画布.drawRect(130130180180,油漆);
油漆。设置行程宽度(0);
油漆.setColor(颜色为青色);
画布.drawRect(133、160、177、177、油漆);
油漆。设置颜色(颜色。黄色);
画布.drawRect(133、133、177、160、油漆);
*/

对于(int i=0;i,您可以在自定义视图中使用参数,并在xml中定义
attr

<resources>
    <declare-styleable name="YourStyle">
        <attr name="YourColor" format="color"></attr>
    </declare-styleable>
</resources>
并为您的颜色添加一个setter

public void setYourColor(int innerCircleColor) {
    this. yourcolor = yourcolor;
    invalidate();
}
最后,在
onDraw

paint.setColor(yourcolor);
更改数组时,请调用
setYourColor

paint.setColor(yourcolor);