TA的每日心情 | 开心 2021-3-12 23:18 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
对于自定义UI的设计,涉及到的工作量是很大的,有时候往往要实现一种UI效果而花费大量的时间去思考,找路子,然后实践,运气好的话,自然OK,运气不好,那就很惨了。浪费时间,还没有效果。
不过还好有很多前辈总结出了一些方法跟代码,下面就让我们来看下,颜色渐变效果的实现吧。实践了这么,感觉就这个代码比较好,颜色渐变的比较平滑。很舒服。 下面是效果图:

- 下面是实现代码,大家可以参考下,也许还有更优化的设计呢。
- 下面代码也是从Intenet来的,只是修改了下。
- /**
- * 绘制渐变色选择条
- * @param g
- * @param color
- * @param x
- * @param y
- * @param width
- * @param height
- */
- public final static void drawShadeRect(Graphics g, int color, int x , int y, int width, int height){
- int[] rgb = getShadeColor(color, width);
- for (int by = y; by < y + 20; by += 4)
- {
- int nTemp = y + 20 - (by - y);
- nTemp = nTemp>4 ? 4:nTemp;
- g.drawRGB(rgb, 0, width, x, by, width,
- nTemp, true);
- }
- }
- /**
- * 获取颜色渐变RGB数组,
- * 为了获取这个数据,而又跟CLDC1.0兼容,导致项目增加了一个Float类
- * 导致程序变大
- * @param width
- * @return
- */
- public final static int[] getShadeColor(int color , int width){
- int[] rgb;
-
- int shadeWidth = width;
- int nRgbData = shadeWidth * 4;
-
- rgb = new int[nRgbData];
-
- int alpha = -127;
- for (int i = 0; i < shadeWidth; i++)
- {
- alpha = -127 + i;
- //主要算法在这里。
- int col = color | (128 - alpha << 24);
- rgb[i] = col;
- rgb[i + shadeWidth ] = col;
- rgb[i + shadeWidth * 2] = col;
- rgb[i + shadeWidth * 3] = col;
- }
- return rgb;
- }
- 就两个静态方法很简单的。哈
复制代码
源码下载:http://203.93.208.26/kj/cwb/dir7/DrawCan.zip |
|