2009-11-22 17 views
4

Ma question est plutôt simple, mais je n'ai pas trouvé de réponse, peut-être parce que j'utilise les mauvais termes, mais laissez-moi essayer: est existe-t-il un moyen pour une application BlackBerry (extension du composant écran normal) de garder la barre d'état visible (par barre d'état, pour préciser, la zone où vous voyez la batterie, le nom du réseau, la puissance du signal, etc.)?BlackBerry - Comment afficher la barre d'état du système en haut de l'écran de l'application

merci

Répondre

3

Il y a encore (dans mon expérience jusqu'à la version OS 4.6) ne API exposé à cela, aussi étrange que cela est. Vous pouvez bien sûr programmer votre propre barre d'état, comme le font de nombreuses applications, si vous le jugez nécessaire. Mais vous devez rassembler les informations et afficher les informations d'état avec la logique codée dans votre propre programme.

+0

hmmm ... merci, mais pas exactement la réponse que je voulais entendre :-). Savez-vous s'il existe une bonne source quelque part d'une telle mise en œuvre? – Gadi

+0

Juste pour ajouter à la réponse, à la conférence BlackBerry Developer's cette année dans la session «API futures», ils ont mentionné que post-5.0 ils envisageaient un élément d'interface utilisateur pour fournir une fonctionnalité standard «barre d'état». Mais comme Richard a dit - pour l'instant vous devez rouler le vôtre. –

+0

Oui c'est disponible sur 6.0, très neet. – Richard

2

Voici un exemple de code. Tout d'abord, pour une belle barre de titre, regardez ici: http://www.naviina.eu/wp/blackberry/iphone-style-field-for-blackberry/

Pour afficher une image de puissance de la batterie:

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; 
    } 
... 

Vous devez créer des images mybattery1.png à mybattery5.png, et placez-les dans votre dossier src . Une bonne taille pour commencer est de 28x11 pixels (GIMP est un bon éditeur d'image gratuit). Si vous avez utilisé le code barre de titre de Naviina.eu, puis insérez le code suivant dans la méthode de peinture, comme ceci:

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

Quelques choses à noter: l'image (s) ne rafraîchissez pas à moins que vous invalider l'écran ou appuyez sur/pop à un autre écran. En outre, vous pouvez vouloir des images plus petites pour une perle contre une courbe ou une tempête.

0

Il y a en fait trois endroits que vous pouvez insérer vos informations d'état dans une sous-classe MainScreen:

  • zone Bannière - est situé au haut de l'écran
  • zone Titre - est inférieure à la zone bannière et a normalement un fond différent
  • zone d'état - au bas de l'écran

Vous utilisez setBanner (champ), setTitle (terrain) et setStatus (Champ) pour afficher des informations comme le montre ce qui suit:

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

L'avantage est que chaque méthode accepte un champ d'argument et le programmeur peut composer un champ complexe avec les gestionnaires.