JAVA + 圆球 + 改变 + 填充 + %分比

布局:

<?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);
    }

}

主布局:

什么也没写。。。。

猜你喜欢

转载自blog.csdn.net/xiaoniba987/article/details/79934106