在主屏幕上使用subpaint()不能正确绘制子项

时间:2011-08-01 17:18:37

标签: blackberry

要快速了解问题,请参阅 Create Transparent Mainscreen in Blackberry

我面临的问题是在电视屏幕上画儿童。 我希望我的主屏幕看起来是透明/半透明的原始要求,并添加我的其他UI元素,例如管理者/领域。

因此我使用的UI元素是3个BitmapField,它应该使用BorderFactory.createSimpleBorder()创建其粗边框,并为Field.VISUAL_STATE_FOCUS和Field.VISUAL_STATE_NORMAL状态添加两种颜色。所有这些BitmapField都添加到各自的Horizo​​ntalFieldManger中,而Horizo​​ntalFieldManger又添加到屏幕上。

问题的一部分是,当我在这些BitmapFields上进行导航时,添加到BitmapFields的边框的“某个区域”不会按照指定的状态(正常,焦点)进行绘制。

其他问题是,在火炬9800上,当我从上到下导航或反之亦然时,我看到默认滚动发生应该是正常的但是在每次滚动时我的BitmapField在屏幕上移动时会留下一些尾部/裂缝滚动。

当我使用普通屏幕时不会发生这种情况(不使用subpaint使屏幕透明)。

你知道这里发生了什么......?

  • Big O

1 个答案:

答案 0 :(得分:1)

YMMV,但我用这个做了一个透明的屏幕:

public class TranslucentScreen extends Screen {
    public TranslucentScreen() {
        super(new VerticalFieldManager(USE_ALL_WIDTH | NO_VERTICAL_SCROLL));
        setBackground(BackgroundFactory.createSolidTransparentBackground(0x000000, 150));
    }
    protected void sublayout(int width, int height) {
        setPosition(0, 0);
        setExtent(width, height);

        setPositionDelegate(0, 0);
        layoutDelegate(width, height);
    }
}

这是我制作的具有半透明黑色背景的基本弹出屏幕。我在屏幕上添加了一个VerticalFieldManager,我控制了背景画,所以它就是我想要的,然后将我的其他字段添加到那里。