ANDROID 颜色选择器

时间:2024-02-17 07:55:37



 
 这两天花了点时间做了一个android 的 颜色选择器

 

大牛就不要笑了.

看了几篇文章...

其实好像都是转载的...找不到出处.

其中有一个是 "AS3调色板算法"

里面有介绍了原理.

我们经常看到这种样子的颜色选择器吧..

 

我这里就只是简单说一下.

1构建一张 七彩图:

 

然后其实右边的亮度选择是:

 


 

这样我们的代码就可以进行啦...

 

 

// 创建七彩图片

 private void init() {
  int[] oc = { 0xffff0000, 0xffffff00, 0xff00ff00, 0xff00ffff,
    0xff0000ff, 0xffff00ff, 0xffff0000 };
  float[] op = { 0, 0.16667f, 0.33333f, 0.5f, 0.66667f, 0.83333f, 1 };
  LinearGradient lg = new LinearGradient(0, 0, ORIWIDTH, 0, oc, op,
    TileMode.MIRROR);
  LinearGradient lg2 = new LinearGradient(0, 0, 0, ORIHEIGHT, 0x00808080,
    0xff808080, TileMode.MIRROR);

  oriColor = Bitmap.createBitmap(ORIWIDTH, ORIHEIGHT, Config.ARGB_8888);
  Canvas c = new Canvas(oriColor);
  paint.setShader(lg);
  c.drawRect(0, 0, ORIWIDTH, ORIHEIGHT, paint);
  paint.setShader(lg2);
  c.drawRect(0, 0, ORIWIDTH, ORIHEIGHT, paint);
 }

 

 

// 右边的亮度栏

 private void drawABar(Canvas c) {
  int x, y;
  x = (roundColor & 0x00ffffff);
  y = (x | 0xff000000);
  LinearGradient lg = new LinearGradient(0, 0, layoutWidth, 0, x, y,
    TileMode.MIRROR);
  // 初始化 x 240 + 6 * 2
  y = ORIHEIGHT + (GAP << 2) - GAP + BARHEIGHT;  
  paint.setColor(0xffffffff);  
  c.drawBitmap(aBk, 0, y, paint);
  paint.setShader(lg);
  c.drawRect(0, y, layoutWidth, y + BARHEIGHT, paint);
 }

 

 

其他屏幕事件什么的就不贴代码啦...