在Blackberry OS4.6+有一个新特征的能力,以显示通知标在状态.综合应用程序使用它得到快速和翔实的信息用户:Dealler错过电话、信息未读消息等。

除死者保存我的链接

可能使用的通知标:

  • 错过的事件
  • RSS更新
  • 目状况(ex。天气/应用程序的活动/gps的信号强度)
  • 其他的

我要发布一个如何引导这一特征。

有帮助吗?

解决方案

ApplicationIndicator类

添加/修改/删除通知的图标,我们可以使用 ApplicationIndicator 级:

代表一个应用程序指示,包括一个图标和可选择的数值。
图标是放在指标领域以及其他人,例如新的电子邮件反,日历提醒,未接来电台,安全状况和其他人。

  • 应用程序可以注册只有一个指标和已登记每次手机启动。
  • 所有指标都被清除后的电话重新启动。
  • 指标可能是不可见的,如果将没有任何空间的状态
  • 指标尺寸取决于当前的主题和手机屏幕上的大小。
  • 图标的大小而变化,从10×10至24×24.
  • 如果指标是初始化时有一个大标然后是一个例外抛出。
  • 指标可以有选数值通常作为一个计数器。
  • 值可以是负面的,0或积极的。
  • 如果指标是用作反它最好把它藏起来时,其价值等于0。
  • 如果指标值是太大了,它将显示'99+'或'999+'

添加通知的图标

为此,我们应该创建的实例 ApplicationIcon:

应用标类是结合使用应用指标和应用信息。
它incapsulates图像和绘画性质。

EncodedImage mImage = EncodedImage.getEncodedImageResource("indicator_icon.png");
ApplicationIcon mIcon = new ApplicationIcon(mImage);

然后,我们应该注册ApplicationIndicator与 ApplicationIndicatorRegistry:

ApplicationIndicatorRegistry.登记册(图标, iconOnly, 可见)
图标 -一图标以显示在指标区域
iconOnly -如果指定的指标应该有标仅表示,没有价值
可见 -指定是否的指标必须可见初始

ApplicationIndicatorRegistry reg = ApplicationIndicatorRegistry.getInstance();
ApplicationIndicator indicator = reg.register(mIcon, false, true);

修改指示图标和价值

修改标,使用 ApplicationIndicator.setIcon 方法:

ApplicationIndicatorRegistry reg = ApplicationIndicatorRegistry.getInstance();
ApplicationIndicator appIndicator = reg.getApplicationIndicator();
appIndicator.setIcon(icon);

修改的数值时,使用 ApplicationIndicator.设定值 方法:

ApplicationIndicatorRegistry reg = ApplicationIndicatorRegistry.getInstance();
ApplicationIndicator appIndicator = reg.getApplicationIndicator();
appIndicator.setValue(value);
  • 如果很大的价值是提供了然后指示灯将显示'99+'或'999+'.

隐藏或展示的指标,使用 ApplicationIndicator.setVisible

注销ApplicationIndicator

最可能的是你不想要你的程序指示,以留在状态,它的好 ApplicationIndicatorRegistry.注销() 它在程序接近。

样本应用程序

图标:

除死者保存我的链接

截图:

除死者保存我的链接

代码:

import net.rim.blackberry.api.messagelist.ApplicationIcon;
import net.rim.blackberry.api.messagelist.ApplicationIndicator;
import net.rim.blackberry.api.messagelist.ApplicationIndicatorRegistry;
import net.rim.device.api.system.EncodedImage;
import net.rim.device.api.ui.MenuItem;
import net.rim.device.api.ui.component.LabelField;
import net.rim.device.api.ui.component.Menu;
import net.rim.device.api.ui.container.MainScreen;

class Scr extends MainScreen {
    EncodedImage mImageGreen = EncodedImage
            .getEncodedImageResource("bb_icon_green.png");
    ApplicationIcon mIconGreen = new ApplicationIcon(mImageGreen);
    EncodedImage mImageRed = EncodedImage
            .getEncodedImageResource("bb_icon_red.png");
    ApplicationIcon mIconRed = new ApplicationIcon(mImageRed);

    ApplicationIcon mIcon = mIconGreen;

    public Scr() {
        add(new LabelField("Use menu to:"));
        add(new LabelField("Register indicator"));
        add(new LabelField("Increment value"));
        add(new LabelField("Decrement value"));
        add(new LabelField("Switch icon"));
        add(new LabelField("Unregister indicator"));
    }

    MenuItem menuRegister = new MenuItem("register", 0, 0) {
        public void run() {
            registerIndicator();
        };
    };
    protected int mValue = 0;
    MenuItem menuIncrement = new MenuItem("increment", 0, 0) {
        public void run() {
            mValue++;
            updateValue(mValue);
        };
    };
    MenuItem menuDecrement = new MenuItem("decrement", 0, 0) {
        public void run() {
            mValue--;
            updateValue(mValue);
        };
    };
    MenuItem menuSwitchIcon = new MenuItem("icon", 0, 0) {
        public void run() {
            mIcon = (mIcon == mIconGreen) ? mIconRed : mIconGreen;
            updateIcon(mIcon);
        };
    };
    MenuItem menuUnregister = new MenuItem("unregister", 0, 0) {
        public void run() {
            unregisterIndicator();
        };
    };

    protected void makeMenu(Menu menu, int instance) {
        super.makeMenu(menu, instance);
        menu.add(menuRegister);
        menu.add(menuIncrement);
        menu.add(menuDecrement);
        menu.add(menuSwitchIcon);
        menu.add(menuUnregister);
    }

    private void registerIndicator() {
        try {
            ApplicationIndicatorRegistry reg = ApplicationIndicatorRegistry
                    .getInstance();
            ApplicationIndicator indicator = 
                    reg.register(mIcon, false, true);
        } catch (Exception e) {
        }
    }

    private void unregisterIndicator() {
        try {
            ApplicationIndicatorRegistry reg = ApplicationIndicatorRegistry
                    .getInstance();
            reg.unregister();
        } catch (Exception e) {
        }
    }

    void updateValue(int value) {
        try {
            ApplicationIndicatorRegistry reg = ApplicationIndicatorRegistry
                    .getInstance();
            ApplicationIndicator appIndicator = 
                    reg.getApplicationIndicator();
            appIndicator.setValue(value);
        } catch (Exception e) {
        }
    }

    void updateIcon(ApplicationIcon icon) {
        try {
            ApplicationIndicatorRegistry reg = ApplicationIndicatorRegistry
                    .getInstance();
            ApplicationIndicator appIndicator = 
                    reg.getApplicationIndicator();
            appIndicator.setIcon(icon);
        } catch (Exception e) {
        }
    }
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top