package com.example.firstapp;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import java.util.Random;
public class MyView extends View {
MyThread mythread;
private Paint paint;//画笔
private RectF rectF=new RectF(150,150,380,380);
private int sweepAngle=0;//弧的当前度数
private int sweepAngleAdd=20;//每次弧增加的度数
private Random random=new Random();
private boolean running=true;//控制循环
public MyView(Context context, AttributeSet attrs){
super(context,attrs);
init(context,attrs);
}
public MyView(Context context){
this(context,null);
}
private void init(Context context,AttributeSet attrs){
paint=new Paint();
paint.setTextSize(60);
}
protected void logic(){
sweepAngle+=sweepAngleAdd;
//随机设置画笔颜色
int r=random.nextInt(255);
int g=random.nextInt(255);
int b=random.nextInt(255);
paint.setARGB(255,r,g,b);
if(sweepAngle>=360){
sweepAngle=0;
}
}
private class MyThread extends Thread{
@Override
public void run(){
while(running){
logic();
postInvalidate();//重新绘制会调用ondraw()
try {
Thread.sleep(200);
}catch (InterruptedException e){
e.printStackTrace();
}
}
}
}
@Override
protected void onDraw(Canvas canvas){
Log.i("MyView","onDraw");
if(mythread==null){
mythread=new MyThread();
mythread.start();
}else{
/*
* 第一个参数:rectF 左上的坐标x,y,右下的坐标x,y
* 第二个参数:弧形开始的角度
* 第三个参数:弧形结束的角度
* 第四个参数:true:画扇形,false:画弧线
* 第五个参数:画笔
* */
canvas.drawArc(rectF,0,sweepAngle,true,paint);
}
}
@Override
protected void onDetachedFromWindow(){
running=false;
super.onDetachedFromWindow();
}
}
模拟器上只有Hello World,写的东西只有MyView类,是不是要加什么,还是代码有错