【问题标题】:Create Transparent Mainscreen in Blackberry在黑莓中创建透明主屏幕
【发布时间】:2013-09-05 19:01:44
【问题描述】:

我想在我的Blackberry app 中创建一个MainScreen 类型,它应该是Transparen/Translucent。 我在MyCustomMainScreen's 构造函数上尝试了以下代码,但它仍然显示白屏

Background bg = BackgroundFactory.createSolidTransparentBackground(Color.BLACK, 50);
this.setBackground(bg);

我已在论坛中阅读并测试了它的弹出屏幕,它适用于它们但无法使用mainscreens。 有谁知道如何为 MainScreen 实现这一目标..?

-大O

【问题讨论】:

    标签: blackberry


    【解决方案1】:

    重写paint方法,如:

    class M extends MainScreen
    {
            public M() 
            {
                setBackground(BackgroundFactory.createSolidTransparentBackground(Color.ANTIQUEWHITE, 100));
                LabelField l=new LabelField("hello");
                add(l);
            }
            protected void paint(Graphics graphics) 
            {
                super.subpaint(graphics);
            }
      }
    

    【讨论】:

    • 感谢 Vivek,这真的很有帮助,但是当我添加 3 个 HorzontalFieldManagers (HFM),每个都有一个 BitMapField,到屏幕并滚动它时,BitmapField 图像会留下痕迹并且看起来很糟糕。知道如何处理..?
    • 在 HorzontalFieldManager 的 paint() 方法中使用 invalidate() 方法。
    • Vivek,我尝试在 HFM 的 paint() 方法中调用 invalidate() 来阻止我的 BitMapFields,但之后它甚至不会滚动。看起来像一个循环,一旦它从 paint() 方法绘制并调用 invalidate() 会导致它再次调用 paint()。
    • 您有滚动问题或图像绘制问题?如果出现滚动问题,则使用样式 VERTICAL_SCROLL。
    • 这不是滚动问题,因为所有 UI 元素都在屏幕边界内可见。然而,在像手电筒这样的设备上,它仍然使用触控板在 UI 元素上滚动一点,然后又回来了,这留下了我在那里使用的一些位图的痕迹。
    【解决方案2】:

    而不是

    Background bg = BackgroundFactory.createSolidTransparentBackground(Color.BLACK, 50);
    this.setBackground(bg);
    

    也许更好

    Background bg = BackgroundFactory.createSolidTransparentBackground(Color.BLACK, 50);
    getMainManager().setBackground(bg);
    

    【讨论】:

    • 不覆盖paint()方法。 getMainManager().setBackground(bg);不工作。
    【解决方案3】:

    我在没有覆盖paint 方法的情况下找到了解决方案。您需要将屏幕背景设置为全透明,主管理器设置为半透明:

    // Full transparent background
    setBackground(BackgroundFactory.createSolidTransparentBackground(0, 0));
    
    // Manager translucent background
    getMainManager().setBackground(BackgroundFactory.createSolidTransparentBackground(Color.BLACK, 50));    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-26
      • 1970-01-01
      • 2011-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多