黑莓 - 向下滚动屏幕时出现背景图像问题

时间:2009-12-07 18:04:31

标签: user-interface blackberry background

我正在以编程方式为我的应用程序主屏幕绘制背景图像(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 个答案:

答案 0 :(得分:2)

使用两个嵌套的VerticalFieldManagers查看this forum post有关如何执行此操作的代码。

答案 1 :(得分:0)

不幸的是,您无法让图像自动为您重新定位。滚动浏览图像末尾后,您必须重新绘制图像。

我们遇到了同样的问题,我们试图重新绘制背景,但我们遇到的一个问题是GUI元素在不断变化的背景上的定位。 (如果你有一个带有白色文字的标签,它可能看起来很好,但是当你滚动并且背景也会移动时,它可能会与背景的白色部分或其他类似的问题重叠)。我们决定不使用任何滚动屏幕,并保持界面简单,并具有启动具有更多元素的其他屏幕的按钮。这样,它们不是全部在一个屏幕上,用户必须滚动很多,它解决了背景图像问题

答案 2 :(得分:0)

我解决了这个问题。不确定细节 如果内存服务,我要么做两件事之一: A)在主屏幕上设置背景,将管理器作为主屏幕的父级,并使其字段和背景半透明;这需要油漆覆盖。实质上,您设置不透明度并绘制图像。将其留在HFM / VFM上以覆盖顶部。
B)绘制HFM / VFM的顶部,但设置不透明度主要显示焦点区域......

答案 3 :(得分:0)

另一种可能性是设置具有非常大的垂直滚动的背景图像。因此,当用户向下滚动时,用户会看到图像的底部。