LightingColorFilter笔记

今天在http://stackoverflow.com网站上看到了别人修改button的颜色,点击效果什么的,

突然看到可以用

button.getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0xFFAA0000));
以前没用到过LightingColorFilter这个类 ,google了下,
 
  
@Override
 protected void onDraw(Canvas canvas) {
  
  int mul = 0xFFFFFF00; //remove BLUE component
  int add = 0x0000FF00; //set GREEN full
  LightingColorFilter lightingColorFilter = new LightingColorFilter(mul, add);
  
  Paint MyPaint_Normal = new Paint();
  Paint MyPaint_Lighting = new Paint();
  MyPaint_Lighting.setColorFilter(lightingColorFilter);
     
     Bitmap myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
     canvas.drawBitmap(myBitmap, 400, 100, MyPaint_Normal);
     canvas.drawBitmap(myBitmap, 500, 100, MyPaint_Lighting);
     
 };
因为是基于三基色配色方案来改的,
而且
0xFFFFFF00  0x表示16进制数,前两个ff表示的是透明度,00-ff,接下来两个ff表示红R,00-ff,后面两个ff表示绿G,00-ff,最后两个ff表示蓝B,00-ff,
所以呢
int mul = 0xFFFFFF00; //remove BLUE component           移除蓝色B部分,可以根据三基色配色图看
int add = 0x0000FF00; //set GREEN full                  绿色的填满,差不多就这个意思了。。。

具体的还可以去测试下
 
  
 
  
float[] colorMatrix = { 
    1, 0, 0, 0, 0, //red
    0, 0, 0, 0, 0, //green
    0, 0, 0, 0, 0, //blue
    0, 0, 0, 1, 0 //alpha  
  };
  
  Paint MyPaint = new Paint();
  ColorFilter colorFilter = new ColorMatrixColorFilter(colorMatrix);
     MyPaint.setColorFilter(colorFilter);
     
     Bitmap myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
     canvas.drawBitmap(myBitmap, 100, 100, MyPaint);
 };
这个画出来的效果就是红色和黑色了,因为不透明,这个是color矩阵的用法,不太懂矩阵。。。。。。

你可能感兴趣的:(Android)