2009-11-22 2 views
4

Мой вопрос довольно прост, но я не мог найти ответ, может быть, потому что я использую неправильные термины, но позвольте мне попробовать: есть способ для приложения BlackBerry (расширение обычного компонента экрана), чтобы сохранить строку состояния видимой (по строке состояния, чтобы уточнить, я имею в виду область, где вы видите силу батареи, сетевое имя, силу сигнала и т. д.)?BlackBerry - Как показать строку состояния системы поверх экрана приложения

спасибо

ответ

3

Существует еще (в моем опыте до OS версии 4.6) не API открытой, чтобы сделать это, как ни странно это. Конечно, вы можете запрограммировать свою собственную строку состояния, как это делают многие приложения, если вы считаете это необходимым. Но вам нужно собрать информацию и отобразить информацию о состоянии с логической кодировкой в ​​вашу собственную программу.

+0

Ммм ... спасибо, хотя и не совсем ответ, который я хотел услышать :-). Вы случайно не знаете, есть ли какой-нибудь хороший источник такой реализации? – Gadi

+0

Чтобы добавить ответ, на конференции разработчиков BlackBerry в этом году на сессии «API-фьючерсы» они упомянули, что после 5.0 они рассматривали элемент пользовательского интерфейса, чтобы обеспечить стандартную функциональность «строка состояния». Но, как сказал Ричард, на данный момент вы должны катиться самостоятельно. –

+0

Да, он доступен на 6.0, очень neet. – Richard

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, а затем вставьте следующий код в методе краски, например, так:

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

Некоторые вещи, чтобы отметить: изображение (ы) не обновляют, если вы не аннулирует экран или нажмите/поп на другой экран. Кроме того, вы можете захотеть получить меньшие изображения для Pearl против Curve или Storm.

0

Есть фактически три места, которые вы можете вставить информацию о состоянии в начале В подклассе:

  • Баннер площадь - расположено в верхних экране
  • Название района - находится ниже область Баннера и как правило, имеет другой фон
  • область Статус - в нижней части экрана

используется 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)); 

Преимущество заключается в том, что каждый метод принимает поле в качестве аргумента, и программист может составить сложное поле с менеджерами.

 Смежные вопросы

  • Нет связанных вопросов^_^