import android.os.Process; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import com.example.customedemo3.view.progressView; public class MainActivity extends AppCompatActivity { private progressView pv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); pv = (progressView) findViewById(R.id.pv); } public void kai(View view){ pv.start(); } }
import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; 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 2017/11/30. */ public class progressView extends View { int p=0; Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { if (msg.what==0){ if (p<100){ p++; postInvalidate(); handler.sendEmptyMessageDelayed(0,100); if (p==100){ p=0; } } } } }; public progressView(Context context) { super(context); } public progressView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); } public progressView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint paint = new Paint(); paint.setColor(Color.BLACK); paint.setAntiAlias(true); paint.setStrokeWidth(1); paint.setStyle(Paint.Style.STROKE); canvas.drawCircle(200,200,100,paint); RectF rectF = new RectF(100,100,300,300); paint.setStrokeWidth(3); paint.setColor(Color.RED); canvas.drawArc(rectF,-90,p*360/100,false,paint); paint.setTextSize(50); paint.setColor(Color.BLUE); paint.setStyle(Paint.Style.FILL); paint.setStrokeWidth(2); String text = p+"%"; Rect rect= new Rect(); paint.getTextBounds(text,0,text.length(),rect); canvas.drawText(text,200-rect.width()/2,200+rect.height()/2,paint); } public void start(){ handler.sendEmptyMessageDelayed(0,10); } }
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:test="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.customedemo3.MainActivity"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="kai" android:text="开始" /> <com.example.customedemo3.view.progressView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/pv" /> <!-- <com.example.customedemo3.view.WujiaoxingView android:layout_width="wrap_content" android:layout_height="wrap_content" /> --> </LinearLayout>