<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:custom="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/img" android:layout_width="200dp" android:layout_height="200dp" android:scaleType="centerCrop" android:layout_centerInParent="true"/> <com.example.circleprogresstest.CircleProgressView android:id="@+id/progressView" android:layout_width="60dp" android:layout_height="60dp" android:layout_centerInParent="true" custom:isShowProgress="true" /> </RelativeLayout>
ImageLoader.getInstance().displayImage(url, imageView, options,
new SimpleImageLoadingListener() ,
new ImageLoadingProgressListener() {
@Override
public void onProgressUpdate(String imageUri, View view, int current, int total) {
if(current==total){
progressView.setVisibility(View.GONE);
}else{
progressView.setSweepAngle((int)(360*current*1.0f/total));
progressView.postInvalidate();
}
}
}
);
protected void onDraw(Canvas canvas) {
mWidth=getMeasuredWidth();
mHeight=getMeasuredHeight();
radius=(float)(Math.min(mWidth,mHeight)*1.0/2)-strokeWidth/2;
//绘制内圈圆
mPaint.setColor(initColor);
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeWidth(strokeWidth);
canvas.drawCircle(mWidth/2,mHeight/2,radius,mPaint);
//绘制覆盖的圆弧
mPaint.setColor(coverColor);
RectF rectF=new RectF(mWidth/2-radius,mHeight/2-radius,mWidth/2+radius,mHeight/2+radius);
canvas.drawArc(rectF,-90,sweepAngle,false,mPaint);
//绘制中间的文本
if(isShowProgress){
progressText=String.format(getResources().getString(R.string.progress_text),(int)(sweepAngle*100.0/360));
mPaint.setTextSize(textSize);
mPaint.setColor(textColor);
if(mBound==null){
mBound=new Rect();
}
mPaint.getTextBounds(progressText,0,progressText.length(),mBound);
mPaint.setStyle(Paint.Style.FILL);
canvas.drawText(progressText,mWidth/2-mBound.width()/2,mHeight/2+mBound.height()/2,mPaint);
}
}
<resources> <declare-styleable name="CircleProgressView"> <attr name="initColor" format="color"/> <attr name="coverColor" format="color"/> <attr name="strokeWidth" format="dimension"/> <attr name="progressTextSize" format="dimension"/> <attr name="progressTextColor" format="color"/> <attr name="isShowProgress" format="boolean"/> </declare-styleable> </resources>
private void initValues(Context context, AttributeSet attrs, int defStyleAttr){
TypedArray typedArray=context.getTheme().obtainStyledAttributes(attrs,R.styleable.CircleProgressView,defStyleAttr,0);
int num=typedArray.getIndexCount();
for(int i=0;i<num;i++){
int attr=typedArray.getIndex(i);
switch (attr){
case R.styleable.CircleProgressView_initColor:
initColor=typedArray.getColor(attr,Color.GRAY);
break;
case R.styleable.CircleProgressView_coverColor:
coverColor=typedArray.getColor(attr,Color.BLACK);
break;
case R.styleable.CircleProgressView_strokeWidth:
strokeWidth=typedArray.getDimensionPixelOffset(attr,5);
break;
case R.styleable.CircleProgressView_progressTextSize:
textSize=typedArray.getDimensionPixelSize(attr,30);
break;
case R.styleable.CircleProgressView_progressTextColor:
textColor=typedArray.getColor(attr,Color.BLACK);
break;
case R.styleable.CircleProgressView_isShowProgress:
isShowProgress=typedArray.getBoolean(attr,false);
break;
default:
break;
}
}
typedArray.recycle();
mPaint=new Paint();
mPaint.setAntiAlias(true);
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有