继承View

package wld.bawei.com.myonemoni2.view;

import android.content.Context;
import android.content.Intent;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;

import wld.bawei.com.myonemoni2.Main2Activity;
import wld.bawei.com.myonemoni2.R;

/**
 * Created by 大金鑫 on 2017/12/3.
 */

public class Huayuan extends View implements Runnable {

    private int neibj=100;
    private int wkuan=20;
    private int pro=0;
    private Paint paintn;
    private Paint paintw;
    private Paint paintwz;
    private  String color;
    public Huayuan(Context context) {
        this(context,null);
    }

    public Huayuan(Context context, @Nullable AttributeSet attrs) {
        this(context, attrs,0);
    }

    public Huayuan(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        TypedArray ta = context.getTheme().obtainStyledAttributes(attrs, R.styleable.Huayuan, defStyleAttr, 0);
         color = ta.getString(R.styleable.Huayuan_col);
        if(color==null){
             color="#33FF00";
        }
        Log.e("color",""+color);
        init();
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        int modew = MeasureSpec.getMode(widthMeasureSpec);
        int modeh = MeasureSpec.getMode(heightMeasureSpec);
        int sizew = MeasureSpec.getSize(widthMeasureSpec);
        int sizeh = MeasureSpec.getSize(heightMeasureSpec);
        int width=0;
        int heigth=0;
        switch (modew){
            case MeasureSpec.AT_MOST:{
                width=neibj*2+wkuan*2;
            }break;
            case MeasureSpec.EXACTLY:{
                width=sizew;
            }
        }
        switch (modeh){
            case MeasureSpec.AT_MOST:{
                heigth=neibj*2+wkuan*2;
            }break;
            case MeasureSpec.EXACTLY:{
                heigth=sizeh;
            }
        }
        setMeasuredDimension(width,heigth);
    }

    private void init() {
        paintn = new Paint();
        paintn.setColor(Color.parseColor(color));
        paintw = new Paint();
        paintw.setColor(Color.parseColor("#3300ff"));
        paintw.setAntiAlias(true);
        paintw.setStyle(Paint.Style.STROKE);
        paintw.setStrokeWidth(wkuan);
        paintwz = new Paint();
        paintwz.setTextSize(35);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        Huaneiyuan(canvas);
        Huawaiyaun(canvas);
        Huawenzi(canvas);
    }

    private void Huawenzi(Canvas canvas) {
        String str=pro+"%";
        Paint.FontMetrics fm = paintw.getFontMetrics();
        int ceil = (int) Math.ceil(fm.descent - fm.ascent);
        int v = (int) paintwz.measureText(str, 0, str.length());
        canvas.drawText(str,getWidth()/2-(v/2),getHeight()/2+(ceil/2),paintwz);
    }


    private void Huawaiyaun(Canvas canvas) {
        RectF rectF = new RectF();
        rectF.left=getWidth()/2-neibj-wkuan/2;
        rectF.top=getHeight()/2-neibj-wkuan/2;
        rectF.right=getWidth()/2+neibj+wkuan/2;
        rectF.bottom=getHeight()/2+neibj+wkuan/2;
        canvas.drawArc(rectF,-90,(pro*360)/100,false,paintw);
    }


    private void Huaneiyuan(Canvas canvas) {
        canvas.drawCircle(getWidth()/2,getHeight()/2,neibj,paintn);
    }


    @Override
    public void run() {
       while (true){
           if(pro<100){
              pro+=10;
               try {
                   Thread.sleep(1000);
                   postInvalidate();
               } catch (InterruptedException e) {
                   e.printStackTrace();
               }
           }
           else{
               pro=0;
               Intent intent = new Intent(getContext(), Main2Activity.class);
               getContext().startActivity(intent);
               break;
           }
       }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值