饒榮慶 -- 您今天UCWEB了嗎?--http://www.ucweb.com

          3G 手機開發網

             :: 首頁 :: 聯系 :: 聚合  :: 管理
            99 Posts :: 1 Stories :: 219 Comments :: 0 Trackbacks
          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視線 -- 專注手機軟件開發
          posted on 2007-09-13 11:15 3G工作室 閱讀(1836) 評論(3)  編輯  收藏 所屬分類: j2me

          Feedback

          # re: 顏色漸變選擇條的實現 2007-09-13 11:34 千里冰封
          哈哈,不錯.在J2ME里面是挺難得的  回復  更多評論
            

          # re: 顏色漸變選擇條的實現 2007-09-13 20:15 BeanSoft
          是呀, 很不錯的了. 也可以套用到 Java 里面, 雖然有很多現成的畫漸變的方法. 不過這種比較直接, 呵呵.  回復  更多評論
            

          # re: 顏色漸變選擇條的實現 2007-09-14 09:23 爬蟲工作室
          http://www.3geye.net更多精彩的實現,希望愛好J2me的朋友支持下  回復  更多評論
            

          主站蜘蛛池模板: 广灵县| 同江市| 曲阜市| 福清市| 河池市| 洛扎县| 青海省| 巩留县| 阳朔县| 甘洛县| 象山县| 喀喇沁旗| 肇州县| 耿马| 黄山市| 灵宝市| 巴林左旗| 商水县| 阿合奇县| 霍邱县| 禄丰县| 乐亭县| 微山县| 龙门县| 乳源| 金坛市| 湘乡市| 勃利县| 泰州市| 寿光市| 珠海市| 普格县| 商城县| 遂平县| 泰州市| 西宁市| 会东县| 辉南县| 祁连县| 清丰县| 岢岚县|