#继承自view,先绘制有关的图形
// A code block
private Paint paint; //绘制扇形
private Paint paint2; //绘制框和圆
private Paint paint3; //绘制数字
int num = 10; //中间的倒计时
//线
canvas.drawLine(0,getWidth()/2,getWidth(),getHeight()/2,paint2);
canvas.drawLine(getWidth()/2,0,getWidth()/2,getHeight(),paint2);
//圆
canvas.drawCircle(getWidth()/2,getWidth()/2,150,paint2);
canvas.drawCircle(getWidth()/2, getWidth()/2,150,paint2);
//字
canvas.drawText(str,getWidth()/2-150,getHeight()/2+120,paint3);
canvas.drawArc(rectF,0,flag,true,paint);
#绘制扇形,因为扇形是像雷达一样动画转动覆盖的,所以扇形角度改变,扇形角度改变是每时每刻累加
// A code block
int flag = 0;
//角度累加
public static int ofsent = 10;
RectF rectF = new RectF(0,0,getWidth(),getWidth());
canvas.drawArc(rectF,0,flag,true,paint);
#写一个线程,判断自定义view动画和倒计时
// A code block
Runnable runnable = new Runnable() {
@Override
public void run() {
//如果扇形转了360度
if(flag >=360){
//则把角度归为0
flag = 0;
//倒计时--
num --;
str = num+"";
}
flag += ofsent; //角度累加
if(num>=0){
invalidate();
}else{
//通知
NotificationManager manager= (NotificationManager) getContext().getSystemService(Context.NOTIFICATION_SERVICE);
Notification.Builder builder=new Notification.Builder(getContext());
builder.setSmallIcon(R.mipmap.ic_launcher);
builder.setContentTitle("提示:");
builder.setContentText("倒计时完成进入主页面");
manager.notify(1,builder.build());
}
}
};
#还要写一个Handler,让view每循环一次,再次延迟发送一次
// A code block
Handler handler = new Handler();
//在onDraw()中写
handler.postDelayed(runnable,100);//延迟发送 后重绘,改变绘制扇形的角度