package com.sqisland.android.graphics_demo.widget;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.ColorFilter;
import android.graphics.ColorMatrixColorFilter;
import android.graphics.LightingColorFilter;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.widget.ImageView;
public class FourColorsImageView extends ImageView {
private Bitmap bitmap = null;
public FourColorsImageView(Context context) {
super(context);
}
public FourColorsImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public FourColorsImageView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onDraw(Canvas canvas) {
if (bitmap == null) {
Bitmap quarter = Bitmap.createBitmap(getWidth()/2, getHeight()/2, Bitmap.Config.ARGB_8888);
Canvas quarterCanvas = new Canvas(quarter);
quarterCanvas.scale(0.5f, 0.5f);
super.onDraw(quarterCanvas);
quarterCanvas.scale(2, 2);
createBitmap(quarter);
quarter.recycle();
}
canvas.drawBitmap(bitmap, 0, 0, null);
}
private void createBitmap(Bitmap quarter) {
bitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint();
// Top left
paint.setColorFilter(new LightingColorFilter(Color.RED, 0));
canvas.drawBitmap(quarter, 0, 0, paint);
// Top right
paint.setColorFilter(new LightingColorFilter(Color.YELLOW, 0));
canvas.drawBitmap(quarter, getWidth() / 2, 0, paint);
// Bottom left
paint.setColorFilter(new LightingColorFilter(Color.BLUE, 0));
canvas.drawBitmap(quarter, 0, getHeight()/2, paint);
// Bottom right
paint.setColorFilter(new LightingColorFilter(Color.GREEN, 0));
canvas.drawBitmap(quarter, getWidth() / 2, getHeight() / 2, paint);
}
private ColorFilter createColorFilter(float red, float green, float blue) {
float alpha = 1f;
float[] transform =
{ red, 0, 0, 0, 0,
0, green, 0, 0, 0,
0, 0, blue, 0, 0,
0, 0, 0, alpha, 0 };
return new ColorMatrixColorFilter(transform);
}
}