4

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

谢谢你

4

4 回答 4

3

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

于 2009-11-22T20:10:49.037 回答
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);
...
}

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

于 2009-11-23T23:35:12.913 回答
1

您可以使用 StandardTitleBar,它可能更简单一些。

http://www.blackberry.com/developers/docs/6.0.0api/net/rim/device/api/ui/component/StandardTitleBar.html

于 2011-01-17T21:16:21.013 回答
0

实际上,您可以在 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));

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

于 2010-05-02T15:45:37.803 回答