我的问题很简单,但我找不到答案,可能是因为我使用了错误的条款,但让我试试:有没有办法让BlackBerry应用程序(扩展常规的Screen组件)到保持状态栏可见(通过状态栏,澄清,我的意思是你看到电池强度,网络名称,信号强度等的区域)?
谢谢
答案 0 :(得分:3)
迄今为止(根据我的经验,直到操作系统版本4.6)没有暴露出来的API,这很奇怪。如果您认为有必要,您当然可以像许多应用程序一样编写自己的状态栏。但您必须收集信息并显示状态信息,并将逻辑编码到您自己的程序中。
答案 1 :(得分: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);
...
}
有些注意事项:除非您使屏幕无效或按下/弹出到另一个屏幕,否则图像不会刷新。此外,您可能需要更小的图像用于珍珠与曲线或风暴。
答案 2 :(得分:1)
您可以使用StandardTitleBar,它可能会更直接。
答案 3 :(得分: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));
优点是每个方法都接受一个Field作为参数,程序员可以与管理者组成一个复杂的Field。