Android???????????????????ν?????
???????????? ???????[ 2015/3/30 14:17:21 ] ????????Android ??? ??ó???
	???????????
	???????????????У??????????????Android?????????е????????????http://www.cnblogs.com/jerehedu/p/4360066.html
	?????????????У???????????????????????????дondraw????????????????????????ν???????Ч??????????
	 
	
	??????????????
	????1????д????????MyCircleProgress???View
	????public class MyCircleProgress extends View{
	????…
	????}
	????2????MyCircleProgress???У?????????
	????public int progress=0;//?????????????????
	????/**
	????*????????????????????????ν????????С????????????
	????*/
	????private int mR;//????????????С
	????private int bgColor;//???????????
	????private int fgColor;//?????????????????????????
	????private int drawStyle;//????????FILL????ν???????STROKE??????ν?????
	????private int strokeWidth;//STROKE??????ε???????
	????private int max;//????????y??????
	????/**
	????*???y??????????????????????????????????????
	????*/
	????public synchronized void setProgress(int progress){
	????if(progress<0){
	????progress=0;
	????}else if(progress>max){
	????progress=max;
	????}else{
	????this.progress=progress;
	????}  
	????}
	????public int getMax(){
	????return max; }
	????3?????????????дattrs.xml?????????????????res/values???£????????£?
	????<?xml version="1.0"encoding="utf-8"?>
	????<resources>
	????<declare-styleable name="CircleProgressBar">
	????<attr name="bgColor"format="color"/>
	????<attr name="fgColor"format="color"/>
	????<attr name="r"format="integer"/>
	????<attr name="strokeWidth"format="integer"/>
	????<attr name="drawStyle">
	????<enum name="STROKE"value="0"></enum>
	????<enum name="FILL"value="1"></enum>
	????</attr>
	????<attr name="max"format="integer"/>
	????</declare-styleable>
	????</resources>
	????4????MyCircleProgress???ж??幹???????????????
	????private void initProperty(AttributeSet attrs){
	????TypedArray tArray=context.obtainStyledAttributes(attrs??R.styleable.CircleProgressBar);
	????mR=tArray.getInteger(R.styleable.CircleProgressBar_r??10);
	????bgColor=tArray.getColor(R.styleable.CircleProgressBar_bgColor??Color.GRAY);
	????fgColor=tArray.getColor(R.styleable.CircleProgressBar_fgColor??Color.RED);
	????drawStyle=tArray.getInt(R.styleable.CircleProgressBar_drawStyle??0);
	????strokeWidth=tArray.getInteger(R.styleable.CircleProgressBar_strokeWidth??10);
	????max=tArray.getInteger(R.styleable.CircleProgressBar_max??100);
	????} 
	????public MyCircleProgress(Context context??AttributeSet attrs){
	????super(context??attrs);
	????this.context=context;
	????this.paint=new Paint();
	????this.paint.setAntiAlias(true);//???????
	????this.paint.setStyle(Style.STROKE);//????????????????
	????initProperty(attrs); 
	????}
	????5????MainActivity?в???????????MyCircleProgress????????????
	????<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
	????xmlns:tools="http://schemas.android.com/tools"
	????xmlns:app="http://schemas.android.com/apk/res/com.jereh.mydrawcircleprogress"
	????android:layout_width="match_parent"
	????android:layout_height="match_parent"
	????android:paddingBottom="@dimen/activity_vertical_margin"
	????android:paddingLeft="@dimen/activity_horizontal_margin"
	????android:paddingRight="@dimen/activity_horizontal_margin"
	????android:paddingTop="@dimen/activity_vertical_margin"
	????tools:context=".MainActivity"
	????>
	????<com.jereh.views.MyCircleProgress
	????android:id="@+id/MyCircleProgress"
	????android:layout_width="wrap_content"
	????android:layout_height="wrap_content"
	????app:r="45"
	????app:strokeWidth="10"
	????app:bgColor="#cccccc"
	????app:fgColor="#ff0000"
	????app:drawStyle="FILL"
	????app:max="50"
	????/>
	????</RelativeLayout>
	????6??????????MyCircleProgress????дonDraw??????
	????protected void onDraw(Canvas canvas){
	????super.onDraw(canvas);
	????int center=getWidth()/2;//???λ??
	????this.paint.setColor(bgColor);
	????this.paint.setStrokeWidth(strokeWidth);
	????canvas.drawCircle(center??center??mR??this.paint);
	????//???????
	????this.paint.setColor(fgColor);
	????if(drawStyle==0){
	????this.paint.setStyle(Style.STROKE);
	????opt=false;
	????}else{
	????this.paint.setStyle(Style.FILL);
	????opt=true;
	????}
	????int top=(center-mR);
	????int bottom=(center+mR);
	????RectF oval=new RectF(top??top??bottom??bottom);
	????canvas.drawArc(oval??270??360*progress/max??opt??paint);
	????}
	????7????дMainActivity
	????public class MainActivity extends Activity{
	????private MyCircleProgress progressView;
	????@Override
	????protected void onCreate(Bundle savedInstanceState){
	????super.onCreate(savedInstanceState);
	????setContentView(R.layout.activity_main);
	????progressView=(MyCircleProgress)findViewById(R.id.MyCircleProgress);
	????new ProgressAnimation().execute();
	????}
	????class ProgressAnimation extends AsyncTask<Void??Integer??Void>{
	????@Override
	????protected Void doInBackground(Void...params){
	????//??????????仯
	????for(int i=0;i<progressView.getMax();i++){
	????try{
	????publishProgress(i);
	????Thread.sleep(100);
	????}catch(InterruptedException e){
	????e.printStackTrace();
	????}
	????}
	????return null;
	????}
	????@Override
	????protected void onProgressUpdate(Integer...values){
	????//????????
	????progressView.setProgress(values[0]);
	????progressView.invalidate();
	????super.onProgressUpdate(values);
	????}
	????}
	????}
??????
					
					???·???
App??С????H5?????????????????Щ??
2024/9/11 15:34:34?????????????????????????
2024/9/10 11:13:49P-One ???????????????????????????????????????
2024/9/10 10:14:12???????????????????????????
2024/9/9 18:04:26??????????????????
2023/3/23 14:23:39???д?ò??????????
2023/3/22 16:17:39????????????????????Щ??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44
					
			
								
								
								
								
								
								
								
								
								
								
				
sales@spasvo.com