饒榮慶 -- 您今天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的朋友支持下  回復  更多評論
            

          主站蜘蛛池模板: 镇宁| 库尔勒市| 邻水| 富宁县| 瑞安市| 桑日县| 出国| 河南省| 汕尾市| 同心县| 乐都县| 呼图壁县| 灵璧县| 东海县| 宁波市| 涞水县| 乐陵市| 张家界市| 淮阳县| 雅江县| 宁阳县| 曲阜市| 淮北市| 宁德市| 台北市| 抚州市| 永修县| 萨迦县| 福鼎市| 开阳县| 忻州市| 临澧县| 玛多县| 垣曲县| 海阳市| 乐业县| 榕江县| 嘉义县| 新河县| 旬阳县| 布尔津县|