package carbon.drawable; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.ColorFilter; import android.graphics.Paint; import android.graphics.PixelFormat; import android.graphics.RectF; import android.graphics.drawable.Drawable; import android.support.annotation.IntRange; import android.support.annotation.NonNull; import android.support.annotation.Nullable; public class EditorBackgroundDrawable extends Drawable { private final float cornerRadius; private final RectF rect; private Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); public EditorBackgroundDrawable(Drawable drawable, float cornerRadius) { this.cornerRadius = cornerRadius; if (drawable != null) { Bitmap bitmap = Bitmap.createBitmap(10, 10, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); drawable.setBounds(0, 0, 10, 10); drawable.draw(canvas); int color = bitmap.getPixel(5, 5); paint.setColor(color); } else { paint.setColor(0x00ffffff); } rect = new RectF(); } public EditorBackgroundDrawable(int color, float cornerRadius) { this.cornerRadius = cornerRadius; paint.setColor(color); rect = new RectF(); } @Override public void draw(@NonNull Canvas canvas) { rect.set(getBounds()); canvas.drawRoundRect(rect, cornerRadius, cornerRadius, paint); } @Override public void setAlpha(@IntRange(from = 0, to = 255) int alpha) { } @Override public void setColorFilter(@Nullable ColorFilter colorFilter) { } @Override public int getOpacity() { return PixelFormat.OPAQUE; } }