饒榮慶 -- 您今天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工作室 閱讀(1842) 評論(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的朋友支持下  回復  更多評論
            

          主站蜘蛛池模板: 衡南县| 宝兴县| 佛山市| 手机| 德格县| 天门市| 台东县| 堆龙德庆县| 永兴县| 鲜城| 滨海县| 海伦市| 罗源县| 沂水县| 石河子市| 通州市| 嘉荫县| 扎兰屯市| 双鸭山市| 滁州市| 天津市| 桂林市| 德州市| 成安县| 滦南县| 伊通| 铜梁县| 永嘉县| 澎湖县| 平和县| 渝北区| 泗洪县| 北碚区| 中西区| 乐业县| 江安县| 卓尼县| 襄汾县| 邻水| 定安县| 吉首市|