当前位置: 代码迷 >> Android >> ANDROID 色彩选择器
  详细解决方案

ANDROID 色彩选择器

热度:35   发布时间:2016-05-01 13:49:29.0
ANDROID 颜色选择器



?
?这两天花了点时间做了一个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);
?}

?

?

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

?


?

1 楼 超...越 2012-07-31  
哥们能把你这个颜色选择你器源码发一份!谢谢
  相关解决方案