package com.bzh.mysimplefresco.lib; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.ColorFilter; import android.graphics.Paint; import android.graphics.drawable.Drawable; import android.util.Log; import com.bzh.mysimplefresco.R; /** * ========================================================== <br> * <b>版权</b>:   别志华 版权所有(c) 2015 <br> * <b>作者</b>:   别志华 biezhihua@163.com<br> * <b>创建日期</b>: 15-9-17 <br> * <b>描述</b>:   加载进度<br> * <b>版本</b>:  V1.0 <br> * <b>修订历史</b>: <br> * ========================================================== <br> */ public class LoadingProgressDrawable extends Drawable { private static final String TAG = "LoadingProgressDrawable"; private static int[] Loadings = { R.mipmap.load_progress_1, R.mipmap.load_progress_3, R.mipmap.load_progress_4, R.mipmap.load_progress_6, R.mipmap.load_progress_7, R.mipmap.load_progress_8, R.mipmap.load_progress_9, R.mipmap.load_progress_10, R.mipmap.load_progress_11, R.mipmap.load_progress_12 }; private Paint mPaint; private int mLevel; private Context context; public LoadingProgressDrawable(Context context) { this.context = context; mPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.DITHER_FLAG); } BitmapFactory.Options options = new BitmapFactory.Options(); @Override public void draw(Canvas canvas) { Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), Loadings[getIndex()], options); int left = getBounds().right / 2 - options.outWidth / 2; int top = getBounds().bottom / 2 - options.outHeight / 2; canvas.drawBitmap(bitmap, left, top, mPaint); } private int getIndex() { int index = mLevel / 1000; if (index < 0) { index = 0; } else if (index >= Loadings.length) { index = Loadings.length - 1; } return index; } @Override public void setAlpha(int alpha) { mPaint.setAlpha(alpha); } @Override public void setColorFilter(ColorFilter cf) { mPaint.setColorFilter(cf); } @Override public int getOpacity() { return Color.TRANSPARENT; } @Override protected boolean onLevelChange(int level) { this.mLevel = level; this.invalidateSelf(); return true; } }