package mobi.monaca.framework.nativeui.component; import mobi.monaca.framework.psedo.R; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.ColorFilter; import android.graphics.Paint; import android.graphics.Rect; import android.graphics.drawable.Drawable; public class ToolbarBackgroundDrawable extends Drawable { //private static final String TAG = ToolbarBackgroundDrawable.class.getSimpleName(); protected Drawable drawable; protected int alpha = 79; protected ColorFilter colorFilter = null; protected Context context; public ToolbarBackgroundDrawable(Context context) { super(); this.drawable = context.getResources().getDrawable(R.drawable.monaca_toolbar_bg); this.context = context; } @Override public void draw(Canvas canvas) { Rect rect = drawable.getBounds(); if (rect.width() <= 0 || rect.height() <= 0) { return; } Bitmap bitmap = Bitmap.createBitmap(rect.width(), rect.height(), Bitmap.Config.ARGB_8888); if (colorFilter != null) { drawable.setColorFilter(colorFilter); } drawable.draw(new Canvas(bitmap)); Paint paint = new Paint(); paint.setAlpha(alpha); canvas.drawBitmap(bitmap, 0, 0, paint); bitmap.recycle(); } @Override public void setBounds(Rect bounds) { drawable.setBounds(bounds); super.setBounds(bounds); invalidateSelf(); } @Override public void setBounds(int left, int top, int width, int height) { drawable.setBounds(left, top, width, height); super.setBounds(left, top, width, height); invalidateSelf(); } @Override public int getIntrinsicHeight() { return drawable.getIntrinsicHeight(); } @Override public int getIntrinsicWidth() { return drawable.getIntrinsicWidth(); } @Override public int getMinimumHeight() { return drawable.getMinimumHeight(); } @Override public int getMinimumWidth() { return drawable.getMinimumWidth(); } @Override public boolean getPadding(Rect padding) { return drawable.getPadding(padding); } @Override public void setAlpha(int alpha) { this.alpha = 0xff & alpha; invalidateSelf(); } @Override public void setColorFilter(ColorFilter colorFilter) { this.colorFilter = colorFilter; invalidateSelf(); } @Override public int getOpacity() { return drawable.getOpacity(); } }