我實現了像描畫的組件方式如下:優化定製的作物拉
@Override
protected void onDraw(Canvas canvas) {
int w = canvas.getWidth();
int h = canvas.getHeight();
if (mFinalBitmap == null) {
mFinalBitmap = Bitmap.createBitmap(w, h,
Bitmap.Config.ARGB_8888);
}
if (mTempCanvas == null) {
mTempCanvas = new Canvas(mFinalBitmap);
}
if (mBackgroundBitmap == null) {
mBackgroundBitmap = createBitmap(R.drawable.rounded_background,
w, h);
}
if (mBackgroundImage == null) {
mBackgroundImage = createBitmap(R.drawable.image_for_background, w, h);
}
mTempCanvas.drawBitmap(mBackgroundBitmap, 0, 0, null);
mTempCanvas.drawBitmap(mBackgroundImage, 0, 0, mPaint);
canvas.drawBitmap(mFinalBitmap, 0, 0, null);
}
private Bitmap createBitmap(int id, int width, int height) {
Bitmap bitmap = BitmapFactory.decodeResource(getContext()
.getResources(), id);
return Bitmap.createScaledBitmap(bitmap, width, height, false);
}
凡mPaint有
mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
我想知道的代碼是否好,或者可以針對相同的結果進行優化,它使用很多內存,並且是潛在的觸發器,用於OutOfMemoryError
。
謝謝。
看一看[幀屏蔽(作物)圖像(http://stackoverflow.com/q/12614542/593709) –
代碼幾乎是一樣的存在,位圖創建,臨時帆布其中很多的使用ARGB_888來繪製結果位圖,使其變得沉重。這真的是最好的解決方案嗎? – Niko