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

          3G 手機(jī)開發(fā)網(wǎng)

             :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            99 Posts :: 1 Stories :: 219 Comments :: 0 Trackbacks
          關(guān)鍵字: J2ME       

          文章出處

          http://www.3geye.net/bbs/thread-268-1-1.html


          關(guān)于UI組件,上下滾動,平滑滾動的技術(shù)實(shí)現(xiàn)探討

          關(guān)于UI組件,上下滾動,平滑滾動的技術(shù)實(shí)現(xiàn)探討

          在我設(shè)計的UI中存在的兩個問題一直沒有解決好

          1.是焦點(diǎn)處理機(jī)制-- 這個問題已經(jīng)在前幾天我解決了。

          2.就是上下滾動,平滑滾動,觸摸屏滾動,實(shí)現(xiàn)的不是很到。雖然是解決了一部分問題,但是另外一部分問題又冒出來了。

          下面我重點(diǎn)老討論這個問題。希望大家有什么好的想法也說下。分享下經(jīng)驗(yàn),讓我少走彎路

          現(xiàn)在來看看下面的圖

          假設(shè):圖A 為 整個Canvas可以顯示的圖, 圖B為 需要顯示的圖,

          我們來看看這算適合坐滾動設(shè)計嗎。看看下面的邏輯。現(xiàn)在假設(shè)HA為A的高度, HB為B的高度,ScrollH表示滾動條的高度。進(jìn)度條的位置為ScrollY,系統(tǒng)滾動的增量為regionY

          1.  如果A的高度> B的高度,則不需要滾動

          2.  如果A的高度

           

          下面是算法比例ScrollH/HA = HA/HB è ScrollH=HA*HA/HB;

          得到當(dāng)前進(jìn)度條的位置是 ScrollY/HA = regionY/HB è ScrollY=regionY*HA/HB

           

          當(dāng)調(diào)用keyPressed事件的時候處理regionY; è down:rgionY -= 30; up:region += 30;

          然后自動更新ScrollY ;最后調(diào)用repaint();

           

          上面是算法模型,現(xiàn)在來看下我的具體實(shí)現(xiàn),希望大家對這個模型多多批評,看看還有沒有更好的算法實(shí)現(xiàn)。

          在調(diào)式的過程中遇到一個很特別的問題,居然public void keyPressed(int keyCode)沒有任何響應(yīng)。哈哈,是我眼花,原來是采用了print的方法,所以沒仔細(xì)看,看不到輸出。郁悶啊

           

          經(jīng)過測試,此路完全是走的通的,現(xiàn)在看看代碼是怎么實(shí)現(xiàn)的,我知識對字符串進(jìn)行簡單的處理實(shí)現(xiàn),對于更復(fù)雜的UI組件,原理差不錯。不過要做下小修改

           
          import javax.microedition.lcdui.*;

          /**
           *

          Title:


           *
           *

          Description:


           *
           *

          Copyright: Copyright (c) 2007


           *
           *

          Company:


           *
           * @author not attributable
           * @version 1.0
           */
          public class TestCanvas extends Canvas  {

              private String text="關(guān)關(guān)于UI組件,上下滾動,平滑滾動的視線技術(shù)探討在我設(shè)計的UI中存在的兩個問題一直沒有解決好1.是焦點(diǎn)處理機(jī)制-- 這個問題已經(jīng)在前幾天我解決了。2.就是上下滾動,平滑滾動,觸摸屏滾動,實(shí)現(xiàn)的不是很到。雖然是解決了一部 "+
                                  "分問題,但是另外一部分問題又冒出來了。下面我重點(diǎn)老討論這個問題。希望大家有什么好的想法也說下。分享下經(jīng)驗(yàn),讓我少走彎路關(guān)于UI組件,上下滾動, 平滑滾動的視線技術(shù)探討在我設(shè)計的UI中存在的兩個問題一直沒有解決好1.是焦點(diǎn)處理機(jī)制-- 這個問題已經(jīng)在前幾天我解決了。2.就是上下滾動,平滑滾動,觸摸屏滾動,實(shí)現(xiàn)的不是很到。雖然是解決了一部分問題,但是另外一部分問題又冒出來了。下面 我重點(diǎn)老討論這個問題。希望大家有什么好的想法也說下。分享下經(jīng)驗(yàn),讓我少走彎路于UI組件,上下滾動,平滑滾動的視線技術(shù)探討在我設(shè)計的UI中存在的兩 個問題一直沒有解決好1.是焦點(diǎn)處理機(jī)制-- 這個問題已經(jīng)在前幾天我解決了。2.就是上下滾動,平滑滾動,觸摸屏滾動,實(shí)現(xiàn)的不是很到。雖然是解決了一部分問題,但是另外一部分問題又冒出來了。下面 我重點(diǎn)老討論這個問題。希望大家有什么好的想法也說下。分享下經(jīng)驗(yàn),讓我少走彎路sdf" +
                                  "是焦點(diǎn)處理機(jī)制-- 這個問題已經(jīng)在前幾天我解決了。2.就是上下滾動,平滑滾動,觸摸屏滾動,實(shí)現(xiàn)的不是很到。雖然是解決了一部分問題,但是另外一部分問題又冒出來了。下是 焦點(diǎn)處理機(jī)制-- 這個問題已經(jīng)在前幾天我解決了。2.就是上下滾動,平滑滾動,觸摸屏滾動,實(shí)現(xiàn)的不是很到。雖然是解決了一部分問題,但是另外一部分問題又冒出來了。下是 焦點(diǎn)處理機(jī)制-- 這個問題已經(jīng)在前幾天我解決了。2.就是上下滾動,平滑滾動,觸摸屏滾動,實(shí)現(xiàn)的不是很到。雖然是解決了一部分問題,但是另外一部分問題又冒出來了。下是 焦點(diǎn)處理機(jī)制-- 這個問題已經(jīng)在前幾天我解決了。2.就是上下滾動,平滑滾動,觸摸屏滾動,實(shí)現(xiàn)的不是很到。雖然是解決了一部分問題,但是另外一部分問題又冒出來了。下是 焦點(diǎn)處理機(jī)制-- 這個問題已經(jīng)在前幾天我解決了。2.就是上下滾動,平滑滾動,觸摸屏滾動,實(shí)現(xiàn)的不是很到。雖然是解決了一部分問題,但是另外一部分問題又冒出來了。下是 焦點(diǎn)處理機(jī)制-- 這個問題已經(jīng)在前幾天我解決了。2.就是上下滾動,平滑滾動,觸摸屏滾動,實(shí)現(xiàn)的不是很到。雖然是解決了一部分問題,但是另外一部分問題又冒出來了。下是 焦點(diǎn)處理機(jī)制-- 這個問題已經(jīng)在前幾天我解決了。2.就是上下滾動,平滑滾動,觸摸屏滾動,實(shí)現(xiàn)的不是很到。雖然是解決了一部分問題,但是另外一部分問題又冒出來了。下是 焦點(diǎn)處理機(jī)制-- 這個問題已經(jīng)在前幾天我解決了。2.就是上下滾動,平滑滾動,觸摸屏滾動,實(shí)現(xiàn)的不是很到。雖然是解決了一部分問題,但是另外一部分問題又冒出來了。下 ";
              private int sreenWidth;
              private int sreenHeight;
              private int scrollHeight;
              private int scrollY;
              private int regionY;

              private int numHeight;

              public TestCanvas() {
                  try {

                      this.setFullScreenMode(true);
                      this.sreenHeight = this.getHeight();
                      this.sreenWidth = this.getWidth();
                 }
                  catch(Exception e) {
                      e.printStackTrace();
                  }
              }

           

           

              protected void paint(Graphics g) {
                  g.setColor(0xFFFFFF);
                  g.fillRect(0,0,this.sreenWidth, this.sreenHeight);
                  char[] chars = text.toCharArray();
                  int h = 0;
                  int w = 0;
                  Font font  = g.getFont();
                  g.setColor(0x00000);
                  for(int i=0; i
                      if(w > this.sreenWidth - 18){
                          h += font.getHeight();
                          w = 0;
                      }
                      g.drawChar(chars,w, h + this.regionY, Graphics.TOP | Graphics.LEFT);
                      w += font.charWidth(chars);
                  }
                  if(this.numHeight == 0)
                      this.numHeight = h+font.getHeight();

                  this.scrollHeight = this.sreenHeight * this.sreenHeight/numHeight;
                  this.scrollY = (-this.regionY)*this.sreenHeight/numHeight;

                  g.setColor(255);
                  g.fillRect(this.sreenWidth-6,0, 6, this.sreenHeight);

                  g.setColor(0xFFFFFF);
                   g.fillRect(this.sreenWidth-5,this.scrollY, 4, this.scrollHeight);
              }

               public void keyPressed(int keyCode) {
                   System.out.println(keyCode);
                   if(keyCode == -2){
                       if(this.sreenHeight - this.regionY  > this.numHeight)
                           return;
                       this.regionY -= 30;
                   }
                   else if (keyCode == -1){
                       if(this.regionY>=0)
                           return;
                       this.regionY += 30;
                   }
                   this.repaint();
               }

          }

          爬蟲工作室 -- 專業(yè)的手機(jī)軟件開發(fā)工作室
          3G視線 -- 專注手機(jī)軟件開發(fā)
          posted on 2007-10-16 08:53 3G工作室 閱讀(1597) 評論(3)  編輯  收藏 所屬分類: j2me

          Feedback

          # re: 關(guān)于UI組件,上下滾動,平滑滾動的技術(shù)實(shí)現(xiàn)探討 2007-10-16 12:33 翔南
          貌似沒圖?
          看不到圖哈!  回復(fù)  更多評論
            

          # re: 關(guān)于UI組件,上下滾動,平滑滾動的技術(shù)實(shí)現(xiàn)探討 2007-10-20 01:40 bigboy
          你們工作室的?  回復(fù)  更多評論
            

          # re: 關(guān)于UI組件,上下滾動,平滑滾動的技術(shù)實(shí)現(xiàn)探討[未登錄] 2007-10-31 19:34 xxx
          是的,可惜圖看不到
          去我空間看原文吧。
          wuhua.3geye.net  回復(fù)  更多評論
            

          主站蜘蛛池模板: 张北县| 霍州市| 建昌县| 军事| 石首市| 油尖旺区| 长乐市| 汉沽区| 涿州市| 临洮县| 黔南| 新疆| 康定县| 浦北县| 拜泉县| 张家川| 常德市| 逊克县| 富顺县| 鄱阳县| 科尔| 大余县| 大同县| 稻城县| 互助| 运城市| 宜春市| 宣威市| 澄江县| 夏河县| 科技| 门源| 兰州市| 弥渡县| 澄江县| 曲阜市| 丰顺县| 绥芬河市| 南召县| 怀远县| 天长市|