Android中自制各种进度条的实现

主程序package com.test.myprogressareatype;import android.support.v7.app.ActionBarActivity;import com.test.areatype.MyArea;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;{PROGRESS=0X34;private Button mButton;private MyArea mMyAreaProgress;private int mProgress;private Handler mHandler=new Handler(){(android.os.Message msg) {switch (msg.what) {case PROGRESS:mProgress++;if(mProgress<100){mMyAreaProgress.setmProgress(mProgress);mHandler.sendEmptyMessageDelayed(PROGRESS, 200);}break;default:break;}};};(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mMyAreaProgress=(MyArea) findViewById(R.id.view_progress);mButton=(Button) findViewById(R.id.button_start);mButton.setOnClickListener(this);}(View v) {switch (v.getId()) {case R.id.button_start:mHandler.sendEmptyMessageDelayed(PROGRESS, 1000);break;default:break;}}}View程序package com.test.areatype;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Paint.Align;import android.util.AttributeSet;import android.view.View;{private int mProgress;private Paint mCurrentProgress;private Paint mMaxProgress;private Paint mPaintText;private int mWidth;private int mHeight;() {return mProgress;}(int mProgress) {this.mProgress = mProgress;invalidate();}public MyArea(Context context, AttributeSet attrs) {super(context, attrs);mCurrentProgress = new Paint();mCurrentProgress.setColor(Color.BLUE);mCurrentProgress.setAntiAlias(true);mMaxProgress = new Paint();mMaxProgress.setColor(Color.RED);mMaxProgress.setAntiAlias(true);mPaintText = new Paint();mPaintText.setColor(Color.BLACK);mPaintText.setStrokeWidth(5);mPaintText.setAntiAlias(true);mPaintText.setTextSize(100);mPaintText.setTextAlign(Align.CENTER);}public MyArea(Context context) {super(context);// TODO Auto-generated constructor stub}(int widthMeasureSpec, int heightMeasureSpec) {// TODO Auto-generated method stubsuper.onMeasure(widthMeasureSpec, heightMeasureSpec);mWidth=getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec);mHeight= getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec);}(Canvas canvas) {super.onDraw(canvas);canvas.drawCircle(mWidth / 2, mHeight / 2, 300,mMaxProgress );canvas.drawCircle(mWidth / 2, mHeight / 2, 300/100*mProgress, mCurrentProgress);canvas.drawText(mProgress+”%”, mWidth / 2, mHeight / 2, mPaintText);}}布局文件==”match_parent”android:orientation=”vertical”><Button=”wrap_content”android:text=”开始”/><com.test.areatype.MyArea=”match_parent”></com.test.areatype.MyArea></LinearLayout>效果图

主程序package com.test.myprogressarc;import android.support.v7.app.ActionBarActivity;import com.test.arctype.MyArc;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;{PROGRESS=0X56;private Button mButton;private MyArc mMyArcProgress;private int mProgress;private Handler mHandler=new Handler(){(android.os.Message msg) {switch (msg.what) {case PROGRESS:mProgress++;if(mProgress<=100){mMyArcProgress.setmProgress(mProgress);mHandler.sendEmptyMessageDelayed(PROGRESS, 200);}break;default:break;}};};(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mMyArcProgress=(MyArc) findViewById(R.id.arc_progress);mButton=(Button) findViewById(R.id.button_start);mButton.setOnClickListener(this);}(View v) {switch (v.getId()) {case R.id.button_start:mHandler.sendEmptyMessageDelayed(PROGRESS, 1000);break;default:break;}}}View程序package com.test.arctype;import android.annotation.SuppressLint;import android.annotation.TargetApi;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Paint.Align;import android.os.Build;import android.graphics.RectF;import android.util.AttributeSet;import android.view.View;{private int mProgress;private Paint mCurrentProgress;private Paint mMaxProgress;private Paint mPaintText;private int mWidth;private int mHeight;() {return mProgress;}(int mProgress) {this.mProgress = mProgress;invalidate();}public MyArc(Context context, AttributeSet attrs) {super(context, attrs);mCurrentProgress = new Paint();mCurrentProgress.setColor(Color.BLUE);mCurrentProgress.setAntiAlias(true);mCurrentProgress.setStrokeWidth(80);mCurrentProgress.setStyle(Paint.Style.STROKE);mMaxProgress = new Paint();mMaxProgress.setColor(Color.RED);mMaxProgress.setAntiAlias(true);mMaxProgress.setStrokeMiter(5);mMaxProgress.setStyle(Paint.Style.STROKE);mPaintText = new Paint();mPaintText.setColor(Color.BLACK);mPaintText.setStrokeWidth(5);mPaintText.setAntiAlias(true);mPaintText.setTextSize(100);mPaintText.setTextAlign(Align.CENTER);}public MyArc(Context context) {super(context);// TODO Auto-generated constructor stub}(int widthMeasureSpec, int heightMeasureSpec) {// TODO Auto-generated method stubsuper.onMeasure(widthMeasureSpec, heightMeasureSpec);mWidth=getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec);mHeight= getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec);}(Canvas canvas) {// TODO Auto-generated method stubsuper.onDraw(canvas);canvas.drawCircle(mWidth / 2, mHeight / 2, 300, mMaxProgress);canvas.drawCircle(mWidth / 2, mHeight / 2, 220, mMaxProgress);RectF oval1=new RectF(mWidth / 2-260, mHeight / 2-260,mWidth / 2+260, mHeight / 2+260);canvas.drawArc( oval1, 0,mProgress/100f*360 ,false, mCurrentProgress);canvas.drawText(mProgress+”%”, mWidth / 2, mHeight / 2, mPaintText);}}布局文件<LinearLayout 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”android:orientation=”vertical”><Buttonandroid:id=”@+id/button_start”android:layout_width=”wrap_content”android:layout_height=”wrap_content”android:text=”开始”/><com.test.arctype.MyArcandroid:id=”@+id/arc_progress”android:layout_width=”match_parent”android:layout_height=”match_parent”></com.test.arctype.MyArc></LinearLayout>效果图只有在前进中不断学会选择,学会体会,学会欣赏。

Android中自制各种进度条的实现

相关文章:

你感兴趣的文章:

标签云: