ColorFilter
ColorMatrixColorFilter
该类内部引用的有一个ColorMatrix对象,它的主要工作也是通过ColorMatrix完成的。而且主要工作原理也可以看ColorMatrix类的注释。示例如下:
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = mPaint;
float x = 20;
float y = 20;
canvas.drawColor(Color.WHITE);
paint.setColorFilter(null);
ColorMatrix cm = new ColorMatrix();
mAngle += 2;
if (mAngle > 180) {
mAngle = 0;
}
float contrast = mAngle / 180.f;
setContrast(cm, contrast);
paint.setColorFilter(new ColorMatrixColorFilter(cm));
canvas.drawBitmap(mDrawable, x + mDrawable.getWidth() + 10, y,
paint);
invalidate();
}
private void setContrast(ColorMatrix cm, float contrast) {
//会不断地将rgb的值变大,从而导致图片越来越趋向白色(感觉越来越亮)。
float scale = contrast + 1.f;
float translate = (-.5f * scale + .5f) * 255.f;
cm.set(new flo