Растровый фон BlackBerry 6.0 при использовании paintBackground с прокруткой - PullRequest
0 голосов
/ 03 августа 2011

У меня очень странная проблема с фоном позади VerticalFieldManager.

У меня есть менеджер (NO_VERTICAL_SCROLL | NO_HORIZONTAL_SCROLL), который рисует фон в методе paintBackground, который имеет 1 дочерний элемент: VerticalFieldManager (VERTICAL_SCROLL | VERTICAL_SC)) в котором хранятся поля, которые необходимо прокрутить.

Когда прокручивается 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);
}

}

1 Ответ

0 голосов
/ 07 марта 2012

Попробуйте это, используйте этот код в конструкторе вашего класса.

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;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...