2011-07-12 87 views
0

我想在我的Blackberry app中創建一個MainScreen類型的應該是Transparen/Translucent。 我用下面的代碼試圖在MyCustomMainScreen's構造函數,但它仍然顯示一個白色的屏幕在黑莓中創建透明主屏幕

Background bg = BackgroundFactory.createSolidTransparentBackground(Color.BLACK, 50); 
this.setBackground(bg); 

我在論壇上閱讀,也測試了它的彈出屏幕和它正常工作與他們,但失敗mainscreens。 有沒有人有任何想法如何實現這個MainScreen ..?

- 大Ø

回答

3

覆蓋paint方法,如:

class M extends MainScreen 
{ 
     public M() 
     { 
      setBackground(BackgroundFactory.createSolidTransparentBackground(Color.ANTIQUEWHITE, 100)); 
      LabelField l=new LabelField("hello"); 
      add(l); 
     } 
     protected void paint(Graphics graphics) 
     { 
      super.subpaint(graphics); 
     } 
    } 
+0

感謝維韋克這是真正有用的,但是當我加入3個HorzontalFieldManagers(HFMs),每一個在圈有aBitMapField,以屏幕和滾動它,BitmapField圖像留下痕跡,看起來不好。任何想法如何處理..? –

+0

在HorzontalFieldManager的paint()方法中使用invalidate()方法。 –

+0

Vivek,我試圖在HFM的paint()方法中調用invalidate()來阻止我的BitMapFields,但是之後它甚至不會滾動。看起來像一個循環,只要它從paint()方法繪製並調用invalidate()方法,這會導致它再次依次調用paint()。 –

1

而不是

Background bg = BackgroundFactory.createSolidTransparentBackground(Color.BLACK, 50); 
this.setBackground(bg); 

也許更好

Background bg = BackgroundFactory.createSolidTransparentBackground(Color.BLACK, 50); 
getMainManager().setBackground(bg); 
+0

而不重寫paint()方法。 getMainManager()的setBackground(BG);不工作。 –

1

我發現沒有重寫解決方案方法。您需要設置背景全透明屏幕和半透明的主要經理:

// Full transparent background 
setBackground(BackgroundFactory.createSolidTransparentBackground(0, 0)); 

// Manager translucent background 
getMainManager().setBackground(BackgroundFactory.createSolidTransparentBackground(Color.BLACK, 50));