自定义View的绘画加载的画圆圈

页面的布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

   <TextView
       android:layout_width="150dp"
       android:layout_height="50dp"
       android:text="圆圈的自动增值"
       android:textSize="20dp"
       android:id="@+id/textView"
       android:background="#666ccc"
       android:gravity="center"
       android:layout_marginTop="21dp"
       android:layout_alignParentTop="true"
       android:layout_alignParentLeft="true"
       android:layout_alignParentStart="true"
       android:layout_marginLeft="21dp"
       android:layout_marginStart="21dp" />

   <com.example.administrator.cr_huayuanhuan.MyProgressRound
       android:layout_width="300dp"
       android:layout_height="300dp"
       android:id="@+id/vv"
       android:layout_below="@+id/textView"
       android:layout_centerHorizontal="true" />

   <Button
       android:layout_width="100dp"
       android:layout_height="wrap_content"
       android:text="开始"
       android:id="@+id/but1"
       android:layout_below="@+id/vv"
       android:layout_alignLeft="@+id/vv"
       android:layout_alignStart="@+id/vv" />

   <Button
       android:layout_width="100dp"
       android:layout_height="wrap_content"
       android:text="重置"
       android:id="@+id/but2"
       android:layout_alignTop="@+id/but1"
       android:layout_alignRight="@+id/vv"
       android:layout_alignEnd="@+id/vv"
       android:layout_marginRight="23dp"
       android:layout_marginEnd="23dp" />

   >
</RelativeLayout>
//自创的
package com.example.administrator.cr_huayuanhuan;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.View;

/**
 * Created by Administrator on 2017/10/9.
 */
public class MyProgressRound extends View {

    //定义画笔
    Paint   paint;
    //定义扫描过的角度
    private int mProgress=0;
    //自定义文本的属性Textview
    private int mContProgress=0;

    public MyProgressRound(Context context) {
        super(context);
        //调用方法
        init();
    }

    public MyProgressRound(Context context, AttributeSet attrs) {
        super(context, attrs);
        //调用方法
        init();
    }

    public MyProgressRound(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        //调用方法
        init();
    }

    //创建的方法
    public void init(){
        //创建画笔
        paint=new Paint();
        //没有锯齿
        paint.setAntiAlias(true);
        //画笔的大小设置
        paint.setTextSize(50);

    }

    //自己绘制的方法
    @Override
    protected void onDraw(Canvas canvas) {
        //循环所用的画笔的值为细线
        paint.setStrokeWidth(0);

        //设置画笔的颜色
      paint.setColor(Color.GREEN);
        //设置画笔的空心
      paint.setStyle(Paint.Style.STROKE);
        //用画笔绘画圆心为200,200的圆,半径为100的圆
      canvas.drawCircle(230,230,100,paint);
        //用画笔绘画圆心为200,200的圆,半径为80的圆
      canvas.drawCircle(230,230,80,paint);




        //自己绘画个文字
        canvas.drawText(mContProgress+"%",200,240,paint);

        //创建一个矩形上下左右的值
        RectF  rectF=new RectF(140,140,320,320);
        //圆弧所画的宽度
        paint.setStrokeWidth(20);
        // 1.在矩形内画圆2.起始圆弧的度数3.最终的扫描的度数4.
        canvas.drawArc(rectF,0,mProgress,false,paint);

    }

    //自定义的传参的方法接受上面的值
    public void setmProgress(int progress){
        //指定接受的值
        mProgress=progress;
        //将值进行转化
        mContProgress=progress*100/360;
        //重复运行
        invalidate();
    }
    //自定义重置方法让所有为0
    public void setReset(){
        // 扫描的角度为0        mProgress=0;
        // 文本的值为0
        mContProgress=0;
        //再次调用时为最初是的值
        invalidate();

    }


}


//MainActivity
package com.example.administrator.cr_huayuanhuan;

import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.SystemClock;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    MyProgressRound  mpr;
    Button   but1,but2;
    boolean flag=false;
    //设置线程
    Handler handler=new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            //调用重置方法
            mpr.setReset();
            Toast.makeText(MainActivity.this,"走了,我的自动的加载的圈圈!!!",Toast.LENGTH_SHORT).show();

        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //获取控件的id
        mpr=(MyProgressRound) findViewById(R.id.vv);
        but1=(Button) findViewById(R.id.but1);
        but2=(Button) findViewById(R.id.but2);


        //按钮but1的点击事件
        but1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                new AsyncTask<String,Integer,String>(){

                    @Override
                    protected String doInBackground(String... strings) {
                        flag=false;
                        //循环361一圈
                        for(int i=1;i<361;i++){
                            //判断
                            if(flag){
                                //提交
                                handler.sendEmptyMessage(0);
                                //停止线程
                                break;
                            }
                            //睡眠10毫秒
                            SystemClock.sleep(10);
                            //赋值
                            publishProgress(i);
                        }

                        return null;
                    }

                    @Override
                    protected void onProgressUpdate(Integer... values) {
                        mpr.setmProgress(values[0]);
                    }
                }.execute();


            }

        });

        //按钮but2的点击事件
        but2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //flag赋值为true
                    flag=true;
                Toast.makeText(MainActivity.this,"重置我们的自动的加速!!!",Toast.LENGTH_SHORT).show();
            }
        });


    }



}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值