继承View

来源:互联网 发布:万宝宝 知乎 编辑:程序博客网 时间:2024/05/29 04:57
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;           }       }    }}