public class CircleProgressImageView extends View {    private RectF mRect;    private Paint mPaint;    private int mCircleStoreWidth = 50;    /**     * 最大进度值     */    private int mMaxProcessValue = 100;    /**     * 进度值     */    private int mProcessValue  = -1;    private int width;    private int height;    private int bitmap;    private Bitmap drawBitmap;    private Context context;    public CircleProgressImageView(Context context) {        this(context, null);    }    public CircleProgressImageView(Context context, AttributeSet attrs) {        this(context, attrs, 0);    }    public CircleProgressImageView(Context context, AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);        init(context, attrs, defStyleAttr);    }    private void init(Context context, AttributeSet attrs, int defStyleAttr) {        this.context = context;        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CIRCLEPROGRESSIMAGEVIEWATTRS);        bitmap = a.getResourceId(R.styleable.CIRCLEPROGRESSIMAGEVIEWATTRS_imagers, R.mipmap.fujian_icon);        drawBitmap = BitmapFactory.decodeResource(context.getResources(), bitmap);        mRect = new RectF();        mPaint = new Paint();        mPaint.setAntiAlias(true);    }    @Override    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {        super.onMeasure(widthMeasureSpec, heightMeasureSpec);        width = 120;        height = 100;        mRect.left = mCircleStoreWidth / 2 - 10;        mRect.top = mCircleStoreWidth / 2 - 10;        mRect.right = width - mCircleStoreWidth / 2 + 10;        mRect.bottom = width - mCircleStoreWidth / 2 + 10;    }    @Override    protected void onDraw(Canvas canvas) {        super.onDraw(canvas);        canvas.drawColor(Color.TRANSPARENT);        //画圆        float imageLeft = width  - drawBitmap.getWidth() ;        float imageTop = height - drawBitmap.getHeight();        canvas.drawBitmap(drawBitmap, imageLeft, imageTop, mPaint);        if (mProcessValue > 0 && mProcessValue != 100){            mPaint.setColor(getResources().getColor(R.color.color_800000));            mPaint.setStyle(Paint.Style.FILL_AND_STROKE);            mPaint.setStrokeWidth(mCircleStoreWidth);            canvas.drawRect(mRect,mPaint);            mPaint.setStyle(Paint.Style.STROKE);            mPaint.setStrokeWidth(3);            mPaint.setColor(getResources().getColor((R.color.color_80FFFFFF)));            canvas.drawArc(mRect,-90,360,false ,mPaint);            mPaint.setStyle(Paint.Style.FILL);            mPaint.setStrokeWidth(mCircleStoreWidth);            canvas.drawArc(mRect,-90,((float) mProcessValue/mMaxProcessValue)*360,true,mPaint);        }    }    public int getmCircleStoreWidth() {        return mCircleStoreWidth;    }    public void setmCircleStoreWidth(int mCircleStoreWidth) {        this.mCircleStoreWidth = mCircleStoreWidth;    }    public int getmProcessValue() {        return mProcessValue;    }    public void setmProcessValue(int mProcessValue) {        this.mProcessValue = mProcessValue;        invalidate();    }

更多相关文章

  1. 学习进度十二
  2. 【Android】 dialog 设置maxHeight 最大高度
  3. Android(安卓)可滚动圆形进度条 滑块和进度在进度条上面跟着滚动
  4. ch07 Android(安卓)日期与时间对话框
  5. Android一个等待进度条的例子
  6. Android(安卓)seekbar 滑动时上方显示进度
  7. android自定义adapter 滑动屏幕时 进度条显示混乱
  8. android自定义adapter 滑动屏幕时 进度条显示混乱
  9. android自定义adapter 滑动屏幕时 进度条显示混乱

随机推荐

  1. Android下载(外文)
  2. Android ViewPager的简单使用
  3. Android Studio build.gradle 编码配置UT
  4. Ubuntu 及windows 环境下android(Launcher
  5. How to start a new process for Android
  6. Android Camera HAL浅析
  7. Android Neon 优化方式讲解
  8. android 对话框集合
  9. Android:从Eclipse到Android Studio迁移工
  10. Android AutoCompleteTextView示例教程