//图标缩放比例
public static float iconScaleRadio=1f;
private static Canvas mCanvas=new Canvas();
private static Paint mPaint = new Paint();
public synchronized Bitmap markIconTheme(Bitmap original) {
try {
initMarkIcons();
if (original != null&&mCanvas!=null) {
Bitmap resultBmp = Bitmap.createBitmap(IconConfig.iconSize, IconConfig.iconSize,
Bitmap.Config.ARGB_8888);
mPaint.setAntiAlias(true);
mCanvas.setBitmap(resultBmp);
//------sep1---- 画背景
mPaint.setXfermode(null);
mCanvas.drawBitmap(icon_background, 0, 0, null);
//-----sep2 --------icon mask 需要重新建立新的图层来交集图片
int sc = mCanvas.saveLayer(0,0, IconConfig.iconSize, IconConfig.iconSize, null,
Canvas.MATRIX_SAVE_FLAG |
Canvas.CLIP_SAVE_FLAG |
Canvas.HAS_ALPHA_LAYER_SAVE_FLAG |
Canvas.FULL_COLOR_LAYER_SAVE_FLAG |
Canvas.CLIP_TO_LAYER_SAVE_FLAG);
mCanvas.drawBitmap(icon_mask, 0, 0, mPaint);
mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
//绘制居中图片
if (resultBmp.getWidth() > original.getWidth()) {
int offset = (resultBmp.getWidth() - original.getWidth()) / 2;
mCanvas.translate(offset, offset);
mCanvas.drawBitmap(original, 0, 0, mPaint);
mCanvas.translate(-offset, -offset);
} else {
mCanvas.drawBitmap(original, 0, 0, mPaint);
}
mPaint.setXfermode(null);
mCanvas.restoreToCount(sc);
//------sep3---- 画金属框
mCanvas.drawBitmap(icon_border, 0, 0, mPaint);
//end
if (original != null && !original.isRecycled()) {
original.recycle();
original = null;
}
return resultBmp;
}
} catch (Exception e) {
if(mCanvas!=null)
mCanvas.setBitmap(null);
} finally {
}
return null;
}