0
I는이 I 화면에 그리는로이드 그리기 컬러 매트릭스
BitmapDrawable
I 4 검색 막대 (콘트라스트, 휘도, 색조, 채도)
은이 같은 BitmapDrawable의 콘트라스트 변화를 가지고
이 같은 BitmapDrawable의public void setContrast(float mAngle) {
ColorMatrix matrix = new ColorMatrix();
float contrast = mAngle/180.f;
float scale = contrast + 1.f;
float translate = (-.5f * scale + .5f) * 255.f;
float[] cntr = new float[] { scale, 0, 0, 0, translate, 0, scale, 0, 0, translate, 0, 0,
scale, 0, translate, 0, 0, 0, 1, 0 };
matrix.set(cntr);
drawable.setColorFilter(new ColorMatrixColorFilter(matrix));
}
변경 색상 :
public void setHue(float value {
ColorMatrix matrix = new ColorMatrix();
value = cleanValue(value, 180f)/180f * (float) Math.PI;
if (value == 0) {
return;
}
float cosVal = (float) Math.cos(value);
float sinVal = (float) Math.sin(value);
float lumR = 0.213f;
float lumG = 0.715f;
float lumB = 0.072f;
float[] fmatrix = new float[] { lumR + cosVal * (1 - lumR) + sinVal * (-lumR),
lumG + cosVal * (-lumG) + sinVal * (-lumG),
lumB + cosVal * (-lumB) + sinVal * (1 - lumB), 0, 0,
lumR + cosVal * (-lumR) + sinVal * (0.143f),
lumG + cosVal * (1 - lumG) + sinVal * (0.140f),
lumB + cosVal * (-lumB) + sinVal * (-0.283f), 0, 0,
lumR + cosVal * (-lumR) + sinVal * (-(1 - lumR)),
lumG + cosVal * (-lumG) + sinVal * (lumG),
lumB + cosVal * (1 - lumB) + sinVal * (lumB), 0, 0, 0f, 0f, 0f, 1f, 0f, 0f, 0f, 0f,
0f, 1f };
matrix.postConcat(new ColorMatrix(fmatrix));
drawable.setColorFilter(new ColorMatrixColorFilter(matrix));
}
protected float cleanValue(float p_val, float p_limit) {
return Math.min(p_limit, Math.max(-p_limit, p_val));
}
잘 작동하지만 함께 작업하기를 원합니다. 어떻게 할 수 있습니까?
대비를 변경하면 그 행렬을 저장하고 색조를 변경 한 후에는 저장된 (대비) 행렬이 증가하지만 잘 작동하지 않습니다. – Androider