页面的布局
<?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(); } }); } }