【问题标题】:BlackBerry - How to show the system status bar on top of the application screenBlackBerry - 如何在应用程序屏幕顶部显示系统状态栏
【发布时间】:2009-11-22 09:57:25
【问题描述】:

我的问题很简单,但我找不到答案,可能是因为我使用了错误的术语,但让我试试:有没有办法让 BlackBerry 应用程序(扩展常规 Screen 组件)保持状态栏可见(通过状态栏,澄清一下,我是指您看到电池强度、网络名称、信号强度等的区域)?

谢谢

【问题讨论】:

    标签: blackberry statusbar blackberry-simulator


    【解决方案1】:

    到目前为止(根据我的操作系统版本 4.6 的经验)还没有公开 API 来执行此操作,这很奇怪。如果您认为有必要,您当然可以像许多应用程序一样编写自己的状态栏。但是您必须收集信息并显示带有逻辑编码的状态信息到您自己的程序中。

    【讨论】:

    • 嗯...谢谢,虽然不是我想听到的答案:-)。您是否碰巧知道这种实现的某个地方是否有任何好的来源?
    • 只是为了补充答案,在今年 BlackBerry 开发者大会的“API 未来”会议上,他们提到后 5.0 他们正在考虑使用 UI 元素来提供标准的“状态栏”功能.但就像理查德说的那样——现在你必须自己动手。
    • 是的,它在 6.0 上可用,非常好。
    【解决方案2】:

    这里有一些示例代码。首先,一个漂亮的标题栏,看这里:http://www.naviina.eu/wp/blackberry/iphone-style-field-for-blackberry/

    显示电池电量图像:

    import net.rim.device.api.system.Bitmap;
    import net.rim.device.api.system.DeviceInfo;
    ...
    public static Bitmap getBatteryImage(){
            int batteryPercent = DeviceInfo.getBatteryLevel();
            int val = 1;
            if(batteryPercent > 80){
                val = 5;
            }else if(batteryPercent > 60 ){
                val = 4;
            }else if(batteryPercent > 40){
                val = 3;
            }else if(batteryPercent > 20){
                val = 2;
            }else {
                val = 1;
            }
            Bitmap batteryImage = Bitmap.getBitmapResource("mybattery"+val+".png");
            return batteryImage;
        }
    ...
    

    您需要创建图像 mybattery1.png 到 mybattery5.png,并将它们放在您的 src 文件夹中。一个好的开始尺寸是 28x11 像素(GIMP 是一个很好的免费图像编辑器)。如果你使用了来自 Naviina.eu 的标题条码,那么在 paint 方法中插入如下代码,如下所示:

    protected void paint(Graphics graphics) {
    ...
            int w = this.getPreferredWidth();
            int h = this.getPreferredHeight();
            Bitmap batteryImage = getBatteryImage();
            int batteryStartY = (h - batteryImage.getHeight()) / 2;    
            graphics.drawBitmap(w - batteryImage.getWidth(), batteryStartY, w, h,
                    batteryImage, 0, 0);
    ...
    }
    

    需要注意的事项:除非您使屏幕无效或推送/弹出到另一个屏幕,否则图像不会刷新。此外,您可能希望珍珠与曲线或风暴的图像更小。

    【讨论】:

      【解决方案3】:

      【讨论】:

        【解决方案4】:

        实际上,您可以在 MainScreen 子类中的三个位置插入状态信息:

        • 横幅区域 - 位于顶部 屏幕的
        • 标题区域 - 位于横幅区域下方,通常具有不同的背景
        • 状态区 - 在屏幕底部

        您使用 setBanner(Field)、setTitle(Field) 和 setStatus(Field) 显示信息如下:

            HorizontalFieldManager hfm = new HorizontalFieldManager();
            EncodedImage logo = EncodedImage.getEncodedImageResource("img/Logo.png");       
            Bitmap bm = logo.getBitmap();
        
            hfm.add(new BitmapField(bm));
            hfm.add(new LabelField("Banner area"));     
            setBanner(hfm);
        
            setTitle(new LabelField("Title area", LabelField.FIELD_HCENTER));
            setStatus(new LabelField("Status area", LabelField.FIELD_HCENTER));
        

        优点是每个方法都接受一个字段作为参数,程序员可以用管理器组成一个复杂的字段。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-01-10
          • 1970-01-01
          • 1970-01-01
          • 2015-10-23
          • 2012-02-15
          • 2017-09-16
          • 1970-01-01
          相关资源
          最近更新 更多