2010-03-25 91 views
1

如何在其中僅一個頁面是在黑莓屏幕上一次顯示的頁面的形式顯示圖像。在向後滾動的圖像將在運行時加載。因此,啓動時加載的圖像不會消耗時間。
編輯:我使用從從指定的路徑和圖像調整大小的增加數them.As加載圖像黑莓設備存儲器加載圖像的LoadImage功能,它window.There打開期間增加了啓動時間的內置應用程序(媒體)在黑莓手機,圖像加載,而不需要任何額外的時間。我的想法是顯示適合黑莓屏幕的特定數量的圖像。 作爲用戶向下滾動到屏幕的底部,應用程序將加載和顯示更多的圖像。所以我的問題是如何在用戶達到黑莓的屏幕和顯示一個多行圖像的底部檢測。負荷圖像黑莓

回答

5

保持陣列圖像url和當前圖像索引。在屏幕上放置一個BitmapField。爲Next/Prev添加菜單項。在下一個從遞增索引URL加載位圖時,將其設置爲BitmapField並使屏幕無效。在上一個做減法索引相同。

  • 你可以(也許在風暴)使用按鈕很好,但菜單是在單獨的線程強制性
  • 負荷圖像(特別是如果它們存儲在網頁)
  • 可以實現高速緩存(在應用程序的內存或通過保存在存儲裝置
  • 圖像)一些文本字段可能會有所幫助(文件名,類型,大小,dimentions等)

UPDATE 爲了這個目的,你可以使用ScrollChangeListener

試試這個代碼:

class Scr extends MainScreen implements ScrollChangeListener { 
    static int mRowNumber = 0; 

    public Scr() { 
     getMainManager().setScrollListener(this); 
      //preload some images on the start 
     for (int i = 0; i < 20; i++) { 
      mRowNumber = i; 
      add(new BitmapField(downloadBitmap(), FOCUSABLE)); 

     } 
    } 

    public static Bitmap downloadBitmap() { 
     Bitmap result = new Bitmap(200, 80); 
     Graphics g = new Graphics(result); 
     g.drawRect(0, 0, 200, 80); 
     g.drawText("row #" + String.valueOf(mRowNumber), 30, 30); 
     return result; 
    } 

    public void scrollChanged(final Manager manager, int newHorizontalScroll, 
      int newVerticalScroll) { 
     int testBottomScroll = manager.getVirtualHeight() 
       - manager.getVisibleHeight(); 
     if (testBottomScroll == newVerticalScroll) { 
      mRowNumber++; 
      (new Thread(new Runnable() { 
       public void run() { 
        // simulating download 
        Bitmap bitmap = downloadBitmap(); 
        // update ui in thread safe way 
        addBitmap(bitmap); 
       } 
      })).start(); 
     } 
    } 

    public void addBitmap(final Bitmap bitmap) { 
     UiApplication.getUiApplication().invokeLater(new Runnable() { 
      public void run() { 
       getMainManager().add(new BitmapField(bitmap, FOCUSABLE)); 
      } 
     }); 
    } 
} 

PS用這種方法,你將能夠趕上只,如果有在屏幕上的圖像不夠滾動事件的問題。考慮使用Screen.navigationMovement(int, int, int, int)。別忘了用撥輪和觸摸屏進行測試。

順便說一下我的看法是,這將是最好的一次使用一些線程隊列中加載的所有圖像(圖像所以將異步無鎖UI加載)

+0

增加了問題的更多信息 – Maneesh 2010-03-26 05:22:58