布局:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.com.lianxi_01.MainActivity"> <com.example.com.lianxi_01.MyView android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
自定义View:
package com.example.com.lianxi_01; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.RectF; import android.os.Handler; import android.os.Message; import android.support.annotation.Nullable; import android.util.AttributeSet; import android.view.View; /** * Created by 李小龙 on 2018/4/12. */ public class MyView extends View { private Paint paint; private int yc=0;//改变度数 public MyView(Context context) { this(context,null); } public MyView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); paint = new Paint(); //定义画笔 paint.setAntiAlias(true);//抗锯齿 paint.setStyle(Paint.Style.STROKE);//画笔样式 描边 } private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); invalidate();//重新绘制的方法 } }; @Override protected void onDraw(Canvas canvas) { drawCircle(canvas);//画圆 drawArc(canvas); //画弧形 drawText(canvas); //文字 new Thread(){ @Override public void run() { try { Thread.sleep(50); yc++; if (yc>=101){ return; } postInvalidate(); } catch (Exception e) { e.printStackTrace(); } } }.start(); } //画圆形方法 public void drawCircle(Canvas canvas){ paint.setStrokeWidth(20); //画笔宽度 paint.setColor(Color.GRAY); canvas.drawCircle(200,190,100,paint); } //画弧形方法 public void drawArc(Canvas canvas){ paint.setStrokeWidth(20); //画笔宽度 paint.setStyle(Paint.Style.FILL_AND_STROKE); paint.setColor(Color.RED); //添加颜色 RectF rectF = new RectF(100,90,300,290); canvas.drawArc(rectF,-90,yc*360/100,false,paint); } //中心文字方法 public void drawText(Canvas canvas){ paint.setStrokeWidth(0);//画笔粗细 paint.setTextSize(25); //文字大小 canvas.drawText(yc+"%",10,200,paint); } }
主布局:
什么也没写。。。。