倒计时代码

public class Vv extends View {
Handler handler=new Handler();
Paint paint;//绘制扇形的笔
Paint paint2;//绘制数字的笔
Paint paint3;//绘制框格和圆的笔
String str=“10”;//中间那个数,拼成string然后在绘制
int num=10;//中间那个数
int flag=0;//角度
public static int ofsent=10;//角度插值,累加速度越快
public static void setOfsent() {
ofsent+=10;
}
Runnable runnable=new Runnable() {
@TargetApi(Build.VERSION_CODES.KITKAT_WATCH)
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
@Override
public void run() {
if(flag>=360){
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());
            builder.setSortKey(Notification.CATEGORY_ALARM);
            Intent intent=new Intent(getContext(),Main2Activity.class);
            getContext().startActivity(intent);
        }
    }
};
public Vv(Context context) {
    super(context);
}
public Vv(Context context, @Nullable AttributeSet attrs) {
    super(context, attrs);
    paint=new Paint();
    paint.setColor(Color.parseColor("#BF022D50"));
    paint2=new Paint();
    paint2.setColor(Color.parseColor("#068AF5"));
    paint2.setStrokeWidth(10);
    paint2.setStyle(Paint.Style.STROKE);
    paint3=new Paint();
    paint3.setColor(Color.parseColor("#78CFF7"));
    paint3.setTextSize(300);
    paint3.setStrokeWidth(10);
}
@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    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,250,paint2);
    RectF rectF=new RectF(-150,-150,getWidth()+150,getWidth()+150);
    paint3.setTextAlign(Paint.Align.CENTER);
    Paint.FontMetrics fontMetrics = paint3.getFontMetrics();
    float top = fontMetrics.top;//为基线到字体上边框的距离,即上图中的top
    float bottom = fontMetrics.bottom;//为基线到字体下边框的距离,即上图中的bottom
    int baseLineY = (int) (rectF.centerY() - top/2 - bottom/2);//基线中间点的y轴计算公式
    canvas.drawText(str,rectF.centerX(),baseLineY,paint3);
    canvas.drawArc(rectF,0,flag,true,paint);
    handler.postDelayed(runnable,100);//延迟发送 后重绘,改变绘制扇形的角度
}
@Override
public boolean onTouchEvent(MotionEvent event) {
    if(event.getAction()==MotionEvent.ACTION_DOWN){
        setOfsent();
    }
    return super.onTouchEvent(event);
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值