Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
BlackBerry-如何在应用程序屏幕顶部显示系统状态栏_Blackberry_Statusbar_Blackberry Simulator - Fatal编程技术网

BlackBerry-如何在应用程序屏幕顶部显示系统状态栏

BlackBerry-如何在应用程序屏幕顶部显示系统状态栏,blackberry,statusbar,blackberry-simulator,Blackberry,Statusbar,Blackberry Simulator,我的问题很简单,但我找不到答案,可能是因为我使用了错误的术语,但让我试试:黑莓应用程序(扩展常规屏幕组件)有没有办法保持状态栏可见(为了澄清,我所说的状态栏是指您看到电池强度、网络名称、信号强度等的区域) 谢谢根据我在操作系统版本4.6之前的经验,目前还没有没有API公开这样做,尽管这很奇怪。如果您觉得有必要,您当然可以像许多应用程序一样编写自己的状态栏。但是您必须收集信息并显示状态信息,并将逻辑编码到您自己的程序中。以下是一些示例代码。首先,要获得一个好的标题栏,请查看此处: 要显示电池电量图

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


谢谢

根据我在操作系统版本4.6之前的经验,目前还没有没有API公开这样做,尽管这很奇怪。如果您觉得有必要,您当然可以像许多应用程序一样编写自己的状态栏。但是您必须收集信息并显示状态信息,并将逻辑编码到您自己的程序中。

以下是一些示例代码。首先,要获得一个好的标题栏,请查看此处:

要显示电池电量图像,请执行以下操作:

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是一个很好的免费图像编辑器)。如果您使用了navina.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);
...
}

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

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

  • 横幅区域-位于顶部 屏幕的
  • 标题区域-位于横幅区域下方,通常具有不同的背景
  • 状态区域-在屏幕底部
使用setBanner(字段)、setTitle(字段)和setStatus(字段)显示信息,如下所示:

    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));

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

您可以使用标准标题栏,它可能更简单一些


hmmm…谢谢,尽管这不是我想要听到的答案:-)。你知道这样的实现有没有什么好的来源吗?再补充一句,在今年的黑莓开发者大会上的“API未来”环节中,他们提到5.0后他们正在考虑使用UI元素来提供标准的“状态栏”功能。但正如理查德所说,现在你必须自己动手。是的,它在6.0版上可用,非常neet。