Blackberry - проблема с фоновым изображением при прокрутке экрана вниз - PullRequest
1 голос
/ 07 декабря 2009

Я программно рисую фоновое изображение (размер 320 * 480) для домашнего экрана моего приложения, как показано ниже. Экран имеет функцию прокрутки. Также на экране есть много других элементов управления, таких как Label, EditField и т. Д. В нескольких горизонтальных менеджерах.

Моя проблема в том, что когда я прокручиваю экран вниз, фоновое изображение тоже не занимает нижнюю часть прокрутки, вместо этого я вижу белый нормальный фон. Это не выглядит хорошо. Поэтому я хочу знать, как разместить фоновое изображение даже при прокрутке экрана вниз?

    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..
}

Ответы [ 4 ]

2 голосов
/ 07 декабря 2009

Взгляните на в этом сообщении на форуме , чтобы узнать, как это сделать с помощью двух вложенных VerticalFieldManager.

0 голосов
/ 08 октября 2011

Другая возможность - установить фоновое изображение с очень большой вертикальной прокруткой. Поэтому, когда пользователь прокручивает страницу вниз, он видит нижнюю часть изображения.

0 голосов
/ 09 июля 2010

Я решил это один раз. Не уверен насчет деталей.
Если память не изменяет, я либо сделал одну из двух вещей: A) установить фон на главном экране, родительский менеджер на главный экран и сделать его поля и фон прозрачными; который требовал переопределения краски. По сути, вы устанавливаете непрозрачность и рисуете изображение. Оставьте это до HFM / VFM, чтобы рисовать поверх.
B) нарисуйте поверх HFM / VFM, но установите непрозрачность, чтобы в первую очередь показывать поля фокуса ...

0 голосов
/ 17 декабря 2009

К сожалению, вы не можете получить изображение, чтобы автоматически переместить себя для вас. Вам придется перерисовать изображение, как только вы прокрутите его конец.

У нас была такая же проблема, и мы пытались перерисовать фон, но проблема, с которой мы продолжали сталкиваться, заключалась в расположении элементов графического интерфейса на постоянно меняющемся фоне. (Если у вас есть метка с белым текстом, для начала она может выглядеть хорошо, но когда вы прокручиваете и фон тоже перемещается, он может перекрывать белую часть вашего фона или другие подобные проблемы). Мы решили просто не иметь экранов прокрутки, сохранить интерфейс простым и иметь кнопки, которые запускают другие экраны с большим количеством элементов. Таким образом, они не все на одном экране, и пользователю приходится много прокручивать, и это решает проблему фонового изображения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...