para - BlackBerry-Cómo mostrar la barra de estado del sistema en la parte superior de la pantalla de la aplicación
emulador de blackberry 10 para pc (4)
Podría usar StandardTitleBar, podría ser un poco más directo.
Mi pregunta es bastante simple, pero no pude encontrar una respuesta, podría ser porque estoy usando los términos incorrectos, pero permítanme intentar: ¿hay alguna manera de que una aplicación BlackBerry (extendiendo el componente regular de la pantalla) mantenga el estado? barra visible (por barra de estado, para aclarar, me refiero al área donde se ve la potencia de la batería, el nombre de la red, la potencia de la señal, etc.)?
gracias
Todavía hay (en mi experiencia hasta OS versión 4.6) sin API expuesta a hacer esto, por extraño que sea. Por supuesto, puede programar su propia barra de estado, como lo hacen muchas aplicaciones, si lo considera necesario. Pero debe reunir la información y mostrar la información de estado con la lógica codificada en su propio programa.
Aquí hay un código de muestra. Primero, para obtener una buena barra de título, mira aquí: http://www.naviina.eu/wp/blackberry/iphone-style-field-for-blackberry/
Para mostrar una imagen de resistencia de la batería:
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;
}
...
Necesitas crear imágenes mybattery1.png en mybattery5.png, y colocarlas en tu carpeta src. Un buen tamaño para comenzar es de 28x11 píxeles (GIMP es un buen editor de imágenes gratuito). Si utilizó el código de barras del título de Naviina.eu, inserte el siguiente código en el método de pintura, de esta manera:
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);
...
}
Algunas cosas a tener en cuenta: la (s) imagen (es) no se actualizan a menos que invalide la pantalla o presione / pase a otra pantalla. Además, es posible que desee imágenes más pequeñas para una Perla frente a una Curva o Tormenta.
En realidad, hay tres lugares donde puede insertar su información de estado en una subclase de MainScreen:
- Área de la pancarta: se encuentra en la parte superior de la pantalla
- Área de título: está debajo del área de la pancarta y normalmente tiene un fondo diferente
- Área de estado: en la parte inferior de la pantalla
Utiliza setBanner (Field), setTitle (Field) y setStatus (Field) para mostrar la información como se muestra a continuación:
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));
La ventaja es que cada método acepta un campo como argumento y el programador puede componer un campo complejo con administradores.