package com.megvii.idcardlib.view;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.RectF;
import android.graphics.SweepGradient;
import android.text.TextPaint;
import android.util.AttributeSet;
import android.view.View;

/**
 *画倒计时圆通过传递 Progress和max来画
 */
public class CircleProgressBar extends View {

    private static final int STD_WIDTH = 20;
    private static final int STD_RADIUS = 75;

    private final TextPaint textPaint;
    SweepGradient sweepGradient = null;
    private int progress = 100;
    private int max = 100;
    private Paint paint;
    private RectF oval;
    private int mWidth = STD_WIDTH;
    private int mRadius = STD_RADIUS;
    private Bitmap bit;

    public CircleProgressBar(Context context, AttributeSet attrs) {
        super(context, attrs);
        paint = new Paint();
        oval = new RectF();
        textPaint = new TextPaint();
        // bit = BitmapFactory.decodeResource(getResources(), R.drawable.mg_liveness_circle);
        sweepGradient = new SweepGradient(getWidth() / 2, getHeight() / 2, new int[]{0xfffe9a8e, 0xff3fd1e4
                , 0xffdc968e}, null);
    }

    public int getMax() {
        return max;
    }

    public void setMax(int max) {
        this.max = max;
    }

    public int getProgress() {
        return progress;
    }

    public void setProgress(int progress) {
        this.progress = progress;
        invalidate();
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int width = MeasureSpec.getSize(widthMeasureSpec);
        int height = MeasureSpec.getSize(heightMeasureSpec);
        int use = width > height ? height : width;
        int sum = STD_WIDTH + STD_RADIUS;
        try {
            mWidth = (STD_WIDTH * use) / (2 * sum);
            mRadius = (STD_RADIUS * use) / (2 * sum);
        } catch (Exception e) {
            mWidth = 1;
            mRadius = 1;
        }
        setMeasuredDimension(use, use);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        paint.setAntiAlias(true);
        paint.setFlags(Paint.ANTI_ALIAS_FLAG);
        paint.setColor(0xff000000);
        paint.setStrokeWidth(mWidth);// 设置画笔宽度
        paint.setStyle(Paint.Style.STROKE);// 设置中空的样式
        canvas.drawCircle(mWidth + mRadius, mWidth + mRadius, mRadius, paint);// 在中心为(100,100)的地方画个半径为55的圆,宽度为setStrokeWidth:10,也就是灰色的底边
        paint.setColor(0xff3fd1e4);// 设置画笔为绿色
        oval.set(mWidth, mWidth, mRadius * 2 + mWidth, (mRadius * 2 + mWidth));// 设置类似于左上角坐标(45,45),右下角坐标(155,155),这样也就保证了半径为55
        canvas.drawArc(oval, -90, ((float) progress / max) * 360, false, paint);// 画圆弧,第二个参数为:起始角度,第三个为跨的角度,第四个为true的时候是实心,false的时候为空心
        paint.reset();

    }
}