2009-12-07 29 views
1

我以編程方式爲我的應用主屏幕繪製背景圖像(320 * 480大小),如下所示。 屏幕確實添加了滾動條設施。另外屏幕還有像Label,EditField等多個橫向管理器中的其他許多控件。Blackberry - 滾動屏幕時出現背景圖像

我的問題是,當我向下滾動屏幕時,背景圖像不佔據下面的滾動部分,而是我看到白色的正常背景。它看起來不太好。所以我想知道即使屏幕向下滾動,我如何放置背景圖像?

public MyHomescreen() 
    {  
     super(); 
     LabelField appTitle = new LabelField ("MyApp Title"); 
     setTitle(appTitle); 

     background = Bitmap.getBitmapResource ("HomeScreen.png"); 

     _container = new VerticalFieldManager(Manager.VERTICAL_SCROLL 
      | Manager.VERTICAL_SCROLLBAR) { 
     protected void paint(Graphics g) 
     { 

      int y = MyHomescreen.this.getMainManager().getVerticalScroll(); 
      g.clear(); 
      g.drawBitmap(0, 0, background.getWidth(), 
       background.getHeight(), background, 0, 0); 

      super.paint(g); 
     } 
     protected void sublayout(int maxWidth, int maxHeight) 
     { 
      int width = background.getWidth(); 
      int height = background.getHeight();   
      super.sublayout(width, height); 
      setExtent(width, height); 
     } 

     }; 
     mainVerticalManager = new VerticalFieldManager(Manager.VERTICAL_SCROLL 
      | Manager.VERTICAL_SCROLLBAR) 
     { 
      protected void sublayout(int maxWidth, int maxHeight) 
      { 
       int width = background.getWidth(); 
       int height = background.getHeight();   
       super.sublayout(width, height); 
       setExtent(width, height); 
      } 
     }; 
     // code to add manager into the screen etc.. 
} 
+0

你嘗試過使用長尺寸圖片嗎? 嘗試使用圖像的長度是長度的形式... 它可能會解決您的問題... – 2010-05-14 06:10:44

回答

0

不幸的是,你不能讓圖像自動爲你自己重新定位。一旦滾動到圖像的最後,您將不得不重新繪製圖像。

我們遇到了同樣的問題,我們試圖重繪背景,但是我們遇到的一個問題是GUI元素在不斷變化的背景上的位置。 (如果你有一個帶有白色文本的標籤,它可能看起來很好,但是當你滾動並且背景也移動時,它可能與背景的白色部分重疊,或者其他類似的問題)。我們決定沒有任何滾動屏幕,並保持簡單的界面,並有按鈕啓動其他屏幕與更多的元素。這樣,他們並不都在一個屏幕上,用戶不得不滾動很多,並且它解決了背景圖像問題。

2

看看this forum post有關如何做到這一點使用兩個嵌套VerticalFieldManagers一些代碼。

+0

你好,包含代碼的鏈接並沒有解決我的問題。實際上,該代碼對我的要求沒有任何幫助。在添加代碼後,從結果觀察,它不會爲屏幕創建滾動條,就這些。我想要一個滾動條,並且想要在發生滾動時(或)選擇某些特定的控件(ListField等)來拉伸背景圖像。最終的結果是我想要的是,當有一些不變的背景圖像放置時,不希望在屏幕的任何地方看到任何白色背景補丁。 – Getsy 2009-12-07 18:49:26

+0

只是一個不,我正在爲BB Storm設備工作。 – Getsy 2009-12-07 18:52:57

+0

哦 - 所以你想「平鋪」你的形象,而不僅僅是把它作爲一個靜態的背景? – 2009-12-07 19:37:22

0

我解決了這一次。不清楚細節。
如果內存服務,我做了以下兩件事之一: A)在MainScreen上設置背景,將父級管理員設置爲主屏幕,並使其背景半透明;這需要塗料覆蓋。本質上,你設置不透明度並繪製圖像。把它留給HFM/VFM畫在上面。 B)繪製HFM/VFM的頂部,但將不透明度設置爲主要顯示焦點領域...

0

另一種可能性是設置具有非常大的垂直滾動的背景圖像。所以當用戶向下滾動時,用戶會看到圖像的底部。