2011-08-03 16 views
0

VerticalFieldManagerの背景に非常に奇妙な問題があります。スクロールする必要があるフィールドを格納|(VERTICAL_SCROLLBAR VERTICAL_SCROLL) VerticalFieldManager:1人の子供を持つpaintBackground方法で背景を描く|(NO_HORIZONTAL_SCROLL NO_VERTICAL_SCROLL)BlackBerry 6.0ビットマップの背景paintBackgroundのスクロールに関する問題

は私がマネージャーを持っています。

VerticalFieldManagerをスクロールすると、マネージャのバックグラウンドが移動し始めます(およびその途切れ)。 setBackgroundを使って背景イメージを設定すると、すべて正常に動作しますが、4.5+のサポートが必要です。誰もこれを前に経験しましたか?

私の画面クラス:

public class RMainScreen extends MainScreen { 
EncodedImage fon = EncodedImage.getEncodedImageResource("background_480x360.png"); 
HorizontalFieldManager content; 
public RMainScreen() { 
    super(USE_ALL_WIDTH | USE_ALL_HEIGHT | NO_VERTICAL_SCROLL | NO_VERTICAL_SCROLLBAR); 
    content = new HorizontalFieldManager(HorizontalFieldManager.USE_ALL_WIDTH | HorizontalFieldManager.NO_VERTICAL_SCROLL | HorizontalFieldManager.NO_VERTICAL_SCROLLBAR) { 
     protected void paintBackground(Graphics g) { 
      g.drawImage(0, 0, fon.getWidth(), fon.getHeight(), fon, 0, getLeft(), getTop()); 
     } 
    }; 

    VerticalFieldManager list = new VerticalFieldManager(VerticalFieldManager.USE_ALL_WIDTH | VerticalFieldManager.VERTICAL_SCROLL | VerticalFieldManager.VERTICAL_SCROLLBAR); 

    for(int i=0; i<40; i++) { 
     list.add(new LabelField("item from list " + i, LabelField.FOCUSABLE) { 
      protected void paint(Graphics g) { 
       g.setColor(Color.WHITE); 
       super.paint(g); 
      } 
     }); 
    } 

    content.add(list); 
    add(content); 
} 

}

+0

代わりにgraphics.drawBitmap()を使って試してみましたが、PNGをビットマップとして取得しましたか? – jprofitt

+0

はい、それは助けません... – edredos

+0

プラットフォーム6のために起こりますスムーズなスクロールリストのためのメソッドが追加されています – edredos

答えて

0

クラスのコンストラクタで、このコードを使用し、これを試してみてください。

Bitmap topBg = Bitmap.getBitmapResource(ImageName.topbar); 
     final Bitmap topBg1 = resizeBitmap(topBg, SCREEN_WIDTH, topBg.getHeight()); 
     VerticalFieldManager vfmTop = new VerticalFieldManager(Field.USE_ALL_WIDTH | USE_ALL_WIDTH) 
     { 
      protected void paintBackground(Graphics graphics) 
      { 
       graphics.drawBitmap(0,0,SCREEN_WIDTH,topBg1.getHeight(), topBg1,0,0);    
       super.paint(graphics); 
      } 
      protected void sublayout(int maxWidth, int maxHeight) { 
       // TODO Auto-generated method stub 
       super.sublayout(topBg1.getWidth(), topBg1.getHeight()); 
       setExtent(topBg1.getWidth(), topBg1.getHeight()); 
      } 

     }; 

public static Bitmap resizeBitmap(Bitmap image, int width, int height) 
    { 

     int rgb[] = new int[image.getWidth() * image.getHeight()]; 
     image.getARGB(rgb, 0, image.getWidth(), 0, 0, image.getWidth(), image.getHeight());  
     int rgb2[] = rescaleArray(rgb, image.getWidth(), image.getHeight(), width, height);  
     Bitmap temp2 = new Bitmap(width, height); 
     temp2.setARGB(rgb2, 0, width, 0, 0, width, height); 
     return temp2; 
    }