直接撸代码
public class MyView extends View {
public MyView(Context context) {
super(context);
setBackgroundColor(0x5500ff00);
init();
}
public MyView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init();
}
//声明Paint画笔
private Paint paint;
//初始化
private void init() {
paint = new Paint();
//设置消除锯齿
paint.setAntiAlias(true);
//设置颜色
paint.setColor(Color.RED);
}
/**
* 在画布上画矩形
* @param canvas
*/
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//画矩形
canvas.drawRect(50, 50, 200, 200, paint);
}
/**
* 在主线程里刷新
*/
private int[] colors = {0xff00ff00, 0xff0000ff, 0xffff00ff};
int index;
public void changeColor() {
if (index < colors.length - 1) {
index++;
} else {
index = 0;
}
int color = colors[index];
paint.setColor(color);
//刷新视图,导致视图重新绘制(重新执行onDraw)
invalidate();
}
/**
* 在子线程中刷新
*/
private Thread mThread;
public void startChange() {
mThread = new Thread() {
@Override
public void run() {
try {
while (true) {
Thread.sleep(400);
if (index <colors.length-1){
index++;
}else {
index= 0;
}
int color = colors[index];
paint.setColor(color);
//子线程中更新
postInvalidate();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
mThread.start();
}
/**
* 子线程的停止
*/
public void stopChange(){
if(null != mThread){
mThread.interrupt();
//自空
mThread = null;
}
}
}
然后在MainActivity中设置监听,调用方法就ok了!