颜色渐变选择条的实现

颜色渐变选择条的实现
3G视线 -- 专注手机软件开发

原文出处 http://www.3geye.net/?uid-3-action-viewspace-itemid-111


对于自定义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;
    }



就两个静态方法很简单的。哈



爬虫工作室 -- 专业的手机软件开发工作室
3G视线 -- 专注手机软件开发

你可能感兴趣的:(颜色渐变选择条的实现)