From:http://blog.csdn.net/xiadik/article/details/41648181
packagecom.wangran.beautiful_girl_show.view;importcom.wangran.beautiful_girl_show.view.photoview.PhotoView;importandroid.content.Context;importandroid.graphics.Canvas;importandroid.graphics.Color;importandroid.graphics.Paint;importandroid.graphics.RectF;importandroid.graphics.Typeface;importandroid.util.AttributeSet;/*** 可显示进度的ImageView
*@author夏小川*/
public class ProgressImageView extendsImageView {private static final String TAG = "ProgressImageView";privateContext mContext;public static final int FONT_SIZE = 14;public static final int ROUND_WIDTH = 50;public static final int STROKE_WIDTH = 7;private intmFontSize;private intmRoundWidth;private intmStrokeWidth;privatePaint mPaint;private booleanmShowProgress;private intmProgress;private floatmTextY;private intmCenterX;private intmCenterY;private intmRadius;privateRectF mOval;publicProgressImageView(Context context) {super(context);
mContext=context;
}publicProgressImageView(Context context, AttributeSet attrs) {super(context, attrs);
mContext=context;
}private voidinit() {float scale =mContext.getResources().getDisplayMetrics().density;
mFontSize= (int) (FONT_SIZE *scale);
mRoundWidth= (int) (ROUND_WIDTH *scale);
mStrokeWidth= (int) (STROKE_WIDTH *scale);
mPaint= newPaint();
mPaint.setAntiAlias(true);
mPaint.setTextSize(mFontSize);
mCenterX= getWidth() / 2;
mCenterY= getHeight() / 2;
mRadius= mRoundWidth / 2;
mTextY= mCenterY + mFontSize * 11.0f / 28;
mOval= new RectF(mCenterX - mRadius, mCenterY -mRadius, mCenterX+ mRadius, mCenterY +mRadius);
}public voidonDraw(Canvas canvas) {if(mShowProgress) {if (mCenterX == 0 || mCenterY == 0) {
init();
}//画最外层的大圆环
mPaint.setColor(Color.DKGRAY);
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeWidth(mStrokeWidth);
canvas.drawCircle(mCenterX, mCenterY, mRadius, mPaint);//画进度百分比
mPaint.setStrokeWidth(0);
mPaint.setColor(Color.WHITE);
mPaint.setTypeface(Typeface.MONOSPACE);
mPaint.setTextAlign(Paint.Align.CENTER);
String progressStr= mProgress + "%";
canvas.drawText(progressStr, mCenterX, mTextY, mPaint);//画圆环的进度
mPaint.setStrokeWidth(mStrokeWidth);
mPaint.setColor(Color.WHITE);
canvas.drawArc(mOval,0, 360 * mProgress / 100, false, mPaint);
}else{super.onDraw(canvas);
}
}public voidstartProgress() {
mShowProgress= true;
setProgress(0);
}public void setProgress(intprogress) {if(mShowProgress) {
mProgress=progress;
invalidate();
}
}public voidcloseProgress() {
mShowProgress= false;
}
}