- 浏览: 580334 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (338)
- 已过时文章(留念用) (39)
- Android学习笔记 (30)
- Android开发指引自译 (100)
- Android NDK文档自译 (23)
- Android设计指引自译 (2)
- xp(ペケピー)&linux(理奈、铃)酱~ (4)
- ui酱&歌词自译~ (9)
- lua酱~ (9)
- 自我反省 (1)
- 羽game计划 (1)
- XSL酱 (2)
- java酱 (3)
- 设计的领悟 (58)
- 涂鸦作品(pixiv) (1)
- ruby酱 (2)
- Objective-C编程语言自译 (2)
- Android开发月报 (6)
- objc酱 (2)
- photoshop (3)
- js酱 (6)
- cpp酱 (8)
- antlr酱 (7)
- Lua 5.1参考手册自译 (11)
- 收藏品 (3)
- 待宵草计划 (4)
- 体验版截图 (1)
最新评论
-
naruto60:
太给力了!!!!我这网打不开Intel官网,多亏楼主贴了连接, ...
使用HAXM加速的Android x86模拟器(和一些问题) -
yangyile2011:
谢谢博主,翻译得很好哦
【翻译】(4)片段 -
ggwang:
牙痛的彼岸:痹!
牙痛的彼岸 -
ggwang:
总结得很简练清晰啊,学习了!
ANTLR学习笔记一:概念理解 -
leisurelife1990:
mk sdd
用git下载Android自带app的源代码
【翻译】(20)状态栏通知
see
http://developer.android.com/guide/topics/ui/notifiers/notifications.html
原文见
http://developer.android.com/guide/topics/ui/notifiers/notifications.html
-------------------------------
Status Bar Notifications
状态栏通知
-------------------------------
Quickview
快速概览
* A status bar notification allows your application to notify the user of an event without interupting their current activity
* 状态栏通知允许你的应用程序通知事件的用户而不打断他们的当前活动
* You can attach an intent to your notification that the system will initiate when the user clicks it
* 你可以依附一个意图到你的通知,系统将在用户点击它时初始化它。
In this document
本文目录
* The Basics 基础
* Managing your Notifications 管理你的Notification
* Creating a Notification 创建一个Notification
* Updating the notification 更新通知
* Adding a sound 添加声音
* Adding vibration 添加振动
* Adding flashing lights 添加闪灯
* More features 更多特性
* Creating a Custom Notification Layout 创建一个自定义通知布局
Key classes
关键类
Notification
NotificationManager
-------------------------------
A status bar notification adds an icon to the system's status bar (with an optional ticker-text message) and a notification message in the notifications window. When the user selects the notification, Android fires an Intent that is defined by the Notification (usually to launch an Activity). You can also configure the notification to alert the user with a sound, a vibration, and flashing lights on the device.
状态栏通知添加一个图标到系统的状态栏(带有一个可选的纸带文本消息)以及在通知窗口中的一个通知消息。当用户选择通知时,Android发送一个被Notification定义的Intent(通常会启动一个Activity)。你还可以配置通知以便使用设备上的声音,振动和闪灯警告用户。
A status bar notification should be used for any case in which a background service needs to alert the user about an event that requires a response. A background service should never launch an activity on its own in order to receive user interaction. The service should instead create a status bar notification that will launch the activity when selected by the user.
状态栏通知应该用于后台Service需要警告用户需响应的事件的任何情况下。后台Service应该从不自己启动一个Activity以接收用户的交互。取而代之,Service应该创建一个状态栏通知,它将在被用户选中时启动Activity。
Figure 1 shows the status bar with a notification icon on the left side.
图1展示左侧带有一个通知图标的状态栏。
(图略:
3:40 PM
)
Figure 1. Status bar with a notification.
图1. 带有一个通知的状态栏。
Figure 2 shows the notification's message in the notifications window.
图2展示在通知窗口中通知的消息。
(图略:
2009年4月25日 下午3:41
Android 清空通知
通知
特拉维斯
你在哪里? 3:39 PM
)
Figure 2. The notifications window.
图2. 通知窗口。
-------------------------------
The Basics
基础
An Activity or Service can initiate a status bar notification. Because an activity can perform actions only while it is running in the foreground and its window has focus, you will usually create status bar notifications from a service. This way, the notification can be created from the background, while the user is using another application or while the device is asleep. To create a notification, you must use two classes: Notification and NotificationManager.
一个Activity或Service可以初始化一个状态栏通知。因为一个活动可以执行动作仅当它正在运行在前台中并且它的窗口拥有焦点,所以通常你将从一个服务中创建状态栏通知。这样的话,通知可以在用户正在使用另一个应用程序或当设备正在休眠的时候,从后台中被创建。为了创建一个通知,你必须使用两个类:Notification和NotificationManager。
Use an instance of the Notification class to define the properties of your status bar notification, such as the status bar icon, the notification message, and extra settings such as a sound to play. The NotificationManager is an Android system service that executes and manages all status bar notifications. You do not instantiate the NotificationManager directly. In order to give it your Notification, you must retrieve a reference to the NotificationManager with getSystemService() and then, when you want to notify the user, pass it your Notification with notify().
使用一个Notification类的实例以定义你的状态栏通知的属性,诸如状态栏图标,通知消息,以及额外设置诸如要播放的声音。NotificationManager是一个Android系统服务,它执行并管理所有状态栏通知。你并不是直接实例化NotificationManager。为了把你的Notification传给它,你必须用getSystemService()获取指向NotificationManager的引用,然后当你希望通知用户时,用notify()把你的Notification对象传给它。
To create a status bar notification:
为了创建一个状态栏通知:
1. Get a reference to the NotificationManager:
1. 获取指向NotificationManager的引用:
-------------------------------
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);
-------------------------------
2. Instantiate the Notification:
2. 实例化Notification:
-------------------------------
int icon = R.drawable.notification_icon;
CharSequence tickerText = "Hello";
long when = System.currentTimeMillis();
Notification notification = new Notification(icon, tickerText, when);
-------------------------------
3. Define the notification's message and PendingIntent:
3. 定义通知的消息和PendingIntent:
-------------------------------
Context context = getApplicationContext();
CharSequence contentTitle = "My notification";
CharSequence contentText = "Hello World!";
Intent notificationIntent = new Intent(this, MyClass.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
-------------------------------
4. Pass the Notification to the NotificationManager:
4. 传递Notification给NotificationManager:
-------------------------------
private static final int HELLO_ID = 1;
mNotificationManager.notify(HELLO_ID, notification);
-------------------------------
That's it. Your user has now been notified.
就这样。你的用户现在已经被通知了。
-------------------------------
Managing your Notifications
管理你的Notification
The NotificationManager is a system service that manages all notifications. You must retrieve a reference to it with the getSystemService() method. For example:
NotificationManager是一个管理所有通知的系统服务。你必须用getSystemService()获取指向它的引用。例如:
-------------------------------
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);
-------------------------------
When you want to deliver your status bar notification, pass the Notification to the NotificationManager with notify(int, Notification). The first parameter is the unique ID for the notification and the second is the Notification object. The ID uniquely identifies the notification from within your application. The ID is necessary if you need to update the notification or (if your application manages different kinds of notifications) select the appropriate action when the user returns to your application via the intent defined in the notification.
当你希望传送你的状态栏通知时,用notify(int, Notification)传递Notification给NotificationManager。第一参数是通知的唯一ID而第二参数是Notification对象。ID在你的应用程序中唯一地标识通知。ID是必需的,如果你需要更新通知或者(如果你的应用程序管理不同类型的通知)在用户通过定义在通知内的意图返回到你的应用程序时,选择合适的动作。
To clear the status bar notification when the user selects it from the notifications window, add the "FLAG_AUTO_CANCEL" flag to your Notification. You can also clear it manually with cancel(int), passing it the notification ID, or clear all your notifications with cancelAll().
为了在用户从通知窗口中选择它时清空该状态栏通知,添加FLAG_AUTO_CANCEL标志到你的Notification对象。你还可以用cancel(int)手动清空它,把通知ID传给它,或者用cancelAll()清空你的所有通知。
-------------------------------
Creating a Notification
创建一个Notification
A Notification object defines the details of the notification message that is displayed in the status bar and notifications window, and any other alert settings, such as sounds and blinking lights.
一个Notification对象定义显示在状态栏和通知窗口中的通知消息的细节,以及其它任意警告设置,诸如声音和闪灯。
A status bar notification requires all of the following:
状态栏通知需要以下所有东西:
* An icon for the status bar
* 一个用于状态栏的图标
* A title and message, unless you define a custom notification layout
* 标题和消息,除非你定义一个自定义通知布局
* A PendingIntent, to be fired when the notification is selected
* 一个PendingIntent,在通知被选中时发送
Optional settings for the status bar notification include:
状态栏通知的可选设置包括:
* A ticker-text message for the status bar
* 用于状态栏的纸带文本消息
* An alert sound
* 警告声音
* A vibrate setting
* 振动设置
* A flashing LED setting
* 闪烁LED设置
The starter-kit for a new notification includes the Notification(int, CharSequence, long) constructor and the setLatestEventInfo(Context, CharSequence, CharSequence, PendingIntent) method. These define all the required settings for a notification. The following snippet demonstrates a basic notification setup:
用于创建新通知的初级(注:启动器?)工具箱包含Notification(int, CharSequence, long)构造函数以及setLatestEventInfo(Context, CharSequence, CharSequence, PendingIntent)方法。这些方法定义一个通知的所有所需的设置。以下代码片段演示一个基本通知配置:
-------------------------------
int icon = R.drawable.notification_icon; // icon from resources 来自资源的图标
CharSequence tickerText = "Hello"; // ticker-text 纸带文本
long when = System.currentTimeMillis(); // notification time 通知时间
Context context = getApplicationContext(); // application Context 应用程序Context
CharSequence contentTitle = "My notification"; // message title 消息标题
CharSequence contentText = "Hello World!"; // message text 消息文本
Intent notificationIntent = new Intent(this, MyClass.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
// the next two lines initialize the Notification, using the configurations above
// 下面两行代码用上面的配置初始化Notification
Notification notification = new Notification(icon, tickerText, when);
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
-------------------------------
Updating the notification
更新通知
You can update the information in your status bar notification as events continue to occur in your application. For example, when a new SMS text message arrives before previous messages have been read, the Messaging application updates the existing notification to display the total number of new messages received. This practice of updating an existing notification is much better than adding new notifications, because it avoids clutter in the notifications window.
你可以跟随继续发生在你的应用程序内的事件而更新你的状态栏通知的信息。例如,当一个新的SMS(注:短信服务)文本消息在前一个消息被阅读之前到达时,消息应用程序更新现存通知以显示接收新消息的总数。这条更新现存Notification的实践(注:经验)要远优于添加新的通知,因为避免了通知窗口内的杂乱。
Because each notification is uniquely identified by the NotificationManager with an integer ID, you can revise the notification by calling setLatestEventInfo() with new values, change some field values of the notification, and then call notify() again.
因为每个通知被NotificationManager用一个整型ID唯一标识,所以你可以通过用新的值调用setLatestEventInfo()来修正通知,改变通知的一些域的值,然后再次调用notify()。
You can revise each property with the object member fields (except for the Context and the notification title and text). You should always revise the text message when you update the notification by calling setLatestEventInfo() with new values for contentTitle and contentText. Then call notify() to update the notification. (Of course, if you've created a custom notification layout, then updating these title and text values has no effect.)
你可以用对象的成员域来修正每个属性(除Context和通知标题和文本以外)。你应该总是在你更新通知时修正文本消息,通过用contentTitle和contentText的新值调用setLatestEventInfo()。(当然,如果你已经创建好一个自定义的通知布局,那么更新这些标题和文本值会没有任何效果。)
Adding a sound
添加声音
You can alert the user with the default notification sound (which is defined by the user) or with a sound specified by your application.
你可以用默认的通知声音(由用户定义)或者用你的应用程序指定的声音警告用户。
To use the user's default sound, add "DEFAULT_SOUND" to the defaults field:
为了使用用户的默认声音,添加DEFAULT_SOUND到defaults域
-------------------------------
notification.defaults |= Notification.DEFAULT_SOUND;
-------------------------------
To use a different sound with your notifications, pass a Uri reference to the sound field. The following example uses a known audio file saved to the device SD card:
为了随你的通知使用不同的声音,传递一个Uri引用到sound域。以下示例使用保存在设备SD卡中的一个已知音频文件。
-------------------------------
notification.sound = Uri.parse("file:///sdcard/notification/ringer.mp3");
-------------------------------
In the next example, the audio file is chosen from the internal MediaStore's ContentProvider:
在以下示例中,音频文件从内部MediaStore的ContentProvider中选择。
-------------------------------
notification.sound = Uri.withAppendedPath(Audio.Media.INTERNAL_CONTENT_URI, "6");
-------------------------------
In this case, the exact ID of the media file ("6") is known and appended to the content Uri. If you don't know the exact ID, you must query all the media available in the MediaStore with a ContentResolver. See the Content Providers documentation for more information on using a ContentResolver.
在这种情况下,媒体文件的精确ID(“6”)是已知的并且被尾加到内容Uri。如果你不知道精确ID,那么你必须用一个ContentResolver查询MediaStore中的所有可用媒体。参见内容提供者文档以获取关于使用ContentResolver的更多信息。
If you want the sound to continuously repeat until the user responds to the notification or the notification is cancelled, add FLAG_INSISTENT to the flags field.
如果你希望声音持续地重复直至用户响应通知或通知被取消,添加FLAG_INSISTENT到flags域。
-------------------------------
Note: If the defaults field includes DEFAULT_SOUND, then the default sound overrides any sound defined by the sound field.
注意:如果defaults域包含DEFAULT_SOUND,那么默认声音覆盖被sound域定义的任意声音。
-------------------------------
Adding vibration
添加振动
You can alert the user with the the default vibration pattern or with a vibration pattern defined by your application.
你可以用默认的振动模式或用一个被你的应用程序定义的振动模式警告用户。
To use the default pattern, add DEFAULT_VIBRATE to the defaults field:
为了使用默认模式,添加DEFAULT_VIBRATE到defaults域:
-------------------------------
notification.defaults |= Notification.DEFAULT_VIBRATE;
-------------------------------
To define your own vibration pattern, pass an array of long values to the vibrate field:
为了定义你自己的振动模式,传递一个long型数组值到vibrate域:
-------------------------------
long[] vibrate = {0,100,200,300};
notification.vibrate = vibrate;
-------------------------------
The long array defines the alternating pattern for the length of vibration off and on (in milliseconds). The first value is how long to wait (off) before beginning, the second value is the length of the first vibration, the third is the next length off, and so on. The pattern can be as long as you like, but it can't be set to repeat.
long型数组定义振动关与开长度(以毫秒为单位)的交替模式。最开始的值是从开始算起等待(关闭)的时长,第二个值是第一次振动的长度,第三个值是下一个关闭的长度,如此类推。该模式可以如你喜欢地长,但它不能被设置为重复。
-------------------------------
Note: If the defaults field includes DEFAULT_VIBRATE, then the default vibration overrides any vibration defined by the vibrate field.
注意:如果defaults域包含DEFAULT_VIBRATE,那么默认的振动覆盖任意被vibrate域定义的振动。
-------------------------------
Adding flashing lights
添加闪灯
To alert the user by flashing LED lights, you can implement the default light pattern (if available), or define your own color and pattern for the lights.
为了用闪烁的LED灯警告用户,你可以实现默认的灯光模式(如果可用),或者定义你自己的颜色和模式用于灯光。
To use the default light setting, add DEFAULT_LIGHTS to the defaults field:
为了使用默认的灯光设置,添加DEFAULT_LIGHTS到defaults域:
-------------------------------
notification.defaults |= Notification.DEFAULT_LIGHTS;
-------------------------------
To define your own color and pattern, define a value for the ledARGB field (for the color), the ledOffMS field (length of time, in milliseconds, to keep the light off), the ledOnMS (length of time, in milliseconds, to keep the light on), and also add FLAG_SHOW_LIGHTS to the flags field:
为了定义你自己的颜色和模式,为ledARGB域(对于颜色),ledOffMS域(时间长度,以毫秒为单位,以保持灯光关闭),ledOnMS域(时间长度,以毫秒为单位,以保持灯光开启)定义一个值,并且还要添加FLAG_SHOW_LIGHTS到flags域:
-------------------------------
notification.ledARGB = 0xff00ff00;
notification.ledOnMS = 300;
notification.ledOffMS = 1000;
notification.flags |= Notification.FLAG_SHOW_LIGHTS;
-------------------------------
In this example, the green light repeatedly flashes on for 300 milliseconds and turns off for one second. Not every color in the spectrum is supported by the device LEDs, and not every device supports the same colors, so the hardware estimates to the best of its ability. Green is the most common notification color.
在这个示例中,绿灯重复地持续闪烁300毫秒并关闭一秒。在光谱中不是每种颜色都被设备的LED支持,也不是所有设备支持相同的颜色,所以硬件会评估它的最佳能力。绿色是最一般的通知颜色。
More features
更多特性
You can add several more features to your notifications using Notification fields and flags. Some useful features include the following:
你可以使用Notification的域和标志添加更多的几个特性到你的通知。几个有用的特性包括如下:
* FLAG_AUTO_CANCEL flag
* FLAG_AUTO_CANCEL标志
Add this to the flags field to automatically cancel the notification after it is selected from the notifications window.
添加它到flags域以自动地在它从通知窗口中被选择时取消通知。
* FLAG_INSISTENT flag
* FLAG_INSISTENT标志
Add this to the flags field to repeat the audio until the user responds.
添加它到flags域以重复音频直至用户响应。
* FLAG_ONGOING_EVENT flag
* FLAG_ONGOING_EVENT标志
Add this to the flags field to group the notification under the "Ongoing" title in the notifications window. This indicates that the application is on-going — its processes are still running in the background, even when the application is not visible (such as with music or a phone call).
添加它到flags域以分组通知到通知窗口中的“正在执行”标题下。它指示应用程序正在执行——它的进程仍然运行在后台中,即便当应用程序不可见(诸如正在播放音乐或进行打电话)。
* FLAG_NO_CLEAR flag
* FLAG_NO_CLEAR标志
Add this to the flags field to indicate that the notification should not be cleared by the "Clear notifications" button. This is particularly useful if your notification is on-going.
添加它到flags域以指示通知不应该被“清空通知”按钮清空。它特别有用,如果你的通知正在执行。
* number field
* number域
This value indicates the current number of events represented by the notification. The appropriate number is overlaid on top of the status bar icon. If you intend to use this field, then you must start with "1" when the Notification is first created. (If you change the value from zero to anything greater during an update, the number is not shown.)
这个值指示由通知代表的事件的当前数量。合适的数量被叠加在状态栏图标的上方。如果你打算使用这个域,那么你必须在Notification最先被创建时必须从1开始。(如果在一次更新期间你从0开始改变该值到任意的更大值时,数字不会显示。)
* iconLevel field
* iconLevel域
This value indicates the current level of a LevelListDrawable that is used for the notification icon. You can animate the icon in the status bar by changing this value to correlate with the drawable's defined in a LevelListDrawable. See the LevelListDrawable reference for more information.
这个值指示一个用于通知图标的LevelListDrawable的当前级别。你可以通过改变这个值以关联到定义在LevelListDrawable中定义的可绘画对象的值,使该图标在状态栏中动画化。参见LevelListDrawable的参考文档以获取更多信息。
See the Notification class reference for more information about additional features that you can customize for your application.
参见Notification类参考文档以获取更多关于你可以为你的应用程序自定义的附加特性的信息。
-------------------------------
Creating a Custom Notification Layout
创建一个自定义通知布局
(图略:
2011年9月16日 3:53
Android 清空
通知
自定义通知
这是一个自定义布局
)
Figure 3. Notification with a custom layout.
图3. 带有自定义布局的通知。
By default, the notification that appears in the notifications window includes a title and the message text. These are defined by the contentTitle and contentText parameters of the setLatestEventInfo() method. However, you can also define a custom layout for the notification using RemoteViews. Figure 3 shows an example of a custom notification layout. It looks similar to the default notification, but is actually created with a custom XML layout.
默认,用在通知窗口中的通知包含一个标题和消息文本。这些东西由setLatestEventInfo()方法的contentTitle和contentText参数定义。然而,你还可以用RemoteViews为展开视图定义一个自定义布局。图3展示一个自定义通知布局的示例,它看上去类似于默认的通知,但实际上是用一个自定义的XML布局创建。
To define your own layout for the notification, instantiate a RemoteViews object that inflates a custom layout file, then pass the RemoteViews to the contentView field of your Notification.
为了为通知定义你自己的布局,实例化一个解压自定义布局文件的RemoteViews对象,然后传递RemoteViews给你的Notification的contentView域。
Creating a custom notification layout is best understood with an example:
用一个示例来更好地理解如何创建一个自定义通知布局。
1. Create the XML layout for the notification. For example, the following layout is called custom_notification.xml:
1. 创建通知的XML布局。例如,创建下面被称为custom_notification_layout.xml的布局:
-------------------------------
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp" >
<ImageView android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_alignParentLeft="true"
android:layout_marginRight="10dp" />
<TextView android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/image"
style="@style/NotificationTitle" />
<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/image"
android:layout_below="@id/title"
style="@style/NotificationText" />
</RelativeLayout>
-------------------------------
Notice that the two TextView elements include the style attribute. It's important that you use style resources for the text in your custom notifications, because the background color of the notification can vary across different devices and platform versions. Beginning with Android 2.3 (API level 9), the system defines a style for the text it uses for the default notification layouts. Thus, you should apply that style when running on Android 2.3 or higher to ensure that your text is visible against the background.
注意两个TextView元素包含style属性。它对于你对你的自定义通知的文本使用风格资源很重要,因为通知的背景色可能在不同设备和平台版本之间有差异。从Android 2.3(API级别9)开始,系统定义一个文本样式,它被用于默认的通知布局。这样,当运行于Android 2.3或更高版本上时你应该应用那个样式以确保你的文本对比背景而言是可见的。
For example, to use the standard text colors on versions of Android lower than 2.3, you should use the following styles for res/values/styles.xml:
例如,为了在低于2.3的Android版本上使用标准文本颜色,你应该使用以下res/values/styles.xml的样式:
-------------------------------
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="NotificationText">
<item name="android:textColor">?android:attr/textColorPrimary</item>
</style>
<style name="NotificationTitle">
<item name="android:textColor">?android:attr/textColorPrimary</item>
<item name="android:textStyle">bold</item>
</style>
<!-- If you want a slightly different color for some text,
consider using ?android:attr/textColorSecondary -->
<!-- 如果你希望一些文本的颜色稍微不同,
请考虑使用?android:attr/textColorSecondary -->
</resources>
-------------------------------
Then, to apply the system's default colors for notifications on Android 2.3 and higher, use the following styles for res/values-v9/styles.xml:
然后,对于Android 2.3和更高的通知应用系统的默认颜色,对res/values-v9/styles.xml使用以下样式:
-------------------------------
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="NotificationText" parent="android:TextAppearance.StatusBar.EventContent" />
<style name="NotificationTitle" parent="android:TextAppearance.StatusBar.EventContent.Title" />
</resources>
-------------------------------
Now, when running on Android 2.3 (API level 9) or higher, the text in your custom view will use the same colors that the system does for default notifications. This is important because later versions of Android actually change the background color of the notifications to be dark. Inheriting the system's styles ensures that your text will be light in such cases, but also if the background is some other unexpected color, your text will also change as appropriate.
现在,当运行于Android 2.3(API级别9)或更高时,你的自定义视图中的文本将使用与系统提供给默认通知的相同颜色。这很重要,因为较新版本的Android实际上把通知的背景色修改为变暗。继承系统的样式确保你的文本将在这种情况下被加亮,但同时如果背景是一些其它非预期的颜色,那么你的文本将同样在合适的时候改变。
2. Now, in the application code, use the RemoveViews methods to define the image and text. Then pass the RemoteViews object to the contentView field of the Notification, as shown in this example:
2. 现在,在应用程序代码中,使用RemoveViews的方法定义图片和文本。然后传递RemoteViews对象到Notification的contentView域,正如这个示例所示:
-------------------------------
RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.custom_notification_layout);
contentView.setImageViewResource(R.id.image, R.drawable.notification_image);
contentView.setTextViewText(R.id.title, "Custom notification");
contentView.setTextViewText(R.id.text, "This is a custom layout");
notification.contentView = contentView;
-------------------------------
As shown here, pass the application's package name and the layout resource ID to the RemoteViews constructor. Then, define the content for the ImageView and TextView, using the setImageViewResource() and setTextViewText(). In each case, pass the reference ID of the appropriate View object that you want to set, along with the value for that View. Finally, the RemoteViews object is passed to the Notification in the contentView field.
正如这里所示,传递应用程序的包名和布局资源ID到RemoteViews构造函数。然后,使用setImageViewResource()和setTextViewText(),定义ImageView和TextView的内容。在每种情况下,传递你希望设置的合适View对象的引用ID,以及用于那个View的值。最后,RemoteViews对象被传递给contentView域中的Notification。
3. Because you don't need the setLatestEventInfo() method when using a custom view, you must define the Intent for the Notification with the contentIntent field, as in this example:
3. 因为当使用一个自定义视图时你不需要setLatestEventInfo()方法,所以你必须用contentIntent域为Notification定义Intent,正如这个示例所示:
-------------------------------
Intent notificationIntent = new Intent(this, MyClass.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.contentIntent = contentIntent;
-------------------------------
4. The notification can now be sent as usual:
4. 现在通知可以像平常那样被发送:
-------------------------------
mNotificationManager.notify(CUSTOM_VIEW_ID, notification);
-------------------------------
The RemoteViews class also includes methods that you can use to easily add a Chronometer or ProgressBar in your notification's layout. For more information about creating custom layouts for your notification, refer to the RemoteViews class reference.
RemoteViews类还包含一些方法,你可以用它们轻易地在你的通知布局中添加一个Chronometer或ProgressBar。想获取关于用RemoteViews创建自定视图的更多信息,请参考RemoteViews类的参考文档。
-------------------------------
Caution: When creating a custom notification layout, you must take special care to ensure that your custom layout functions properly in different device orientations and resolutions. While this advice applies to all View layouts created on Android, it is especially important in this case because your layout real estate is very restricted. So don't make your custom layout too complex and be sure to test it in various configurations.
警告:当创建一个自定义通知布局时,你必须特别小心地确保你的自定义布局功能(注:函数?)在不同的设备方向和分辨率下是正确的。当这个建议应用被创建在Android上的所有View布局时,它在这种情况下特别地重要,因为你的布局真正的空间是非常有限的。所以不要让你的自定义布局太复杂并确保在不同的配置中测试它。
-------------------------------
Except as noted, this content is licensed under Apache 2.0. For details and restrictions, see the Content License.
除特别说明外,本文在Apache 2.0下许可。细节和限制请参考内容许可证。
Android 4.0 r1 - 09 Dec 2011 11:54
-------------------------------
Portions of this page are modifications based on work created and shared by the Android Open Source Project and used according to terms described in the Creative Commons 2.5 Attribution License.
(此页部分内容基于Android开源项目,以及使用根据创作公共2.5来源许可证描述的条款进行修改)
发表评论
-
【翻译】(9-补丁2)电话簿提供者
2012-07-18 12:54 2400【翻译】(9-补丁2)电话簿提供者 see h ... -
【翻译】(8-补丁1)Android接口定义语言(AIDL)
2012-07-02 05:55 2927【翻译】(8-补丁1)Andro ... -
【翻译】(0)应用组件
2012-06-30 23:50 829【翻译】(0)应用组件 see http:// ... -
【翻译】(88)传感器
2012-05-21 21:25 1078【翻译】(88)传感器 ... -
【翻译】(87)复制与粘贴
2012-05-20 14:48 1929【翻译】(87)复制与粘贴 see http: ... -
【翻译】(86)音频捕捉
2012-05-16 15:14 1104【翻译】(86)音频捕捉 ... -
【翻译】(85)照相机
2012-05-13 15:09 3796【翻译】(85)照相机 see http:// ... -
【翻译】(84)JetPlayer
2012-04-21 16:24 981【翻译】(84)JetPlayer see h ... -
【翻译】(83)媒体回放
2012-04-21 16:00 1860【翻译】(83)媒体回放 see http:/ ... -
【翻译】(82)多媒体与照相机
2012-04-18 23:05 953【翻译】(82)多媒体与照相机 see htt ... -
【翻译】(23-补丁3)构建无障碍服务
2012-04-18 21:57 1627【翻译】(23-补丁3)构 ... -
【翻译】(23-补丁2)使应用程序无障碍
2012-04-16 13:08 2099【翻译】(23-补丁2)使应用程序无障碍 see ... -
【翻译】(23-补丁1)无障碍
2012-04-11 22:38 911【翻译】(23-补丁1)无 ... -
【翻译】(81)Renderscript之运行时API参考手册
2012-04-11 22:13 1416【翻译】(81)Renderscript之运行时API参 ... -
【翻译】(80)Renderscript之计算
2012-04-09 14:09 1444【翻译】(80)Renderscript之计算 ... -
【翻译】(79)Renderscript之图形
2012-04-08 13:59 2866【翻译】(79)Renderscript之图形 ... -
【翻译】(78)Renderscript
2012-04-04 15:35 1442【翻译】(78)Renderscript see ... -
【翻译】(77)可绘画对象动画
2012-03-18 10:52 711【翻译】(77)可绘画对象动画 see htt ... -
【翻译】(76)视图动画
2012-03-18 10:04 806【翻译】(76)视图动画 see http:/ ... -
【翻译】(75)属性动画
2012-03-17 18:24 2508【翻译】(75)属性动画 see http:/ ...
相关推荐
状态栏通常会显示正在运行的应用程序、系统通知以及时间等信息,通过隐藏它,用户可以暂时移除这些元素,创建一个更专注的工作环境,或者遮掩某些不希望他人看到的应用程序。 标签“隐藏状态栏工具”是对该软件功能...
### MFC工具条和状态栏属性设置:详细解析 在MFC框架中,工具条(ToolBar)和状态栏(StatusBar)是用户界面设计中的重要组成部分。对于工具条而言,如果指定了`CBRS_TOOLTIPS`风格(既可以在创建时指定也可以通过`...
状态栏车速表一个简单的Android应用程序,在状态栏中以通知的形式显示您当前的速度。 非常适合户外活动和玩AR游戏。 在, 上获取它,或直接 。特征使用GPS确定当前速度,并以您选择的单位作为通知显示: m / s , km...
状态栏上的“显示/隐藏”图标( Android 4.2+ ) 摄氏(°C)或华氏(°F) 在所需位置显示温度(可以在状态栏上显示) 在设备中选择您喜欢的字体 自定义文字大小和颜色与透明度 高温警报,带有通知声音和振动 ...
- **通知管理器(Notification Manager)**:允许应用程序在状态栏中显示自定义的通知信息。 - **活动管理器(Activity Manager)**:管理应用程序的生命周期,并提供通用的导航回退功能。 #### 四、Android核心库...
在Android系统中,SystemUI是用户界面的重要组成部分,它包含了状态栏、通知栏、快速设置面板等关键元素的实现。Android 4.2.2版本的SystemUI源码为我们提供了深入理解Android UI系统工作原理的宝贵资料。接下来,...
- 详细介绍状态栏、导航栏、工具栏等界面顶部元素的使用。 #### 2. 内容视图 - 探讨活动视图控制器、集合视图、容器视图控制器等,以及如何在应用中展示图片、地图、网络内容等。 #### 3. 控件 - 介绍各种控件的...
### Visual_Studio.NET相关词汇中英翻译解析 #### 抽象类 (Abstract Class) 抽象类是一种特殊类型的类,它不能被实例化。抽象类的主要用途是作为其他类的基础类,这些派生类可以继承抽象类中的成员,并实现其中...
一些功能: 可以选择在系统启动时启动服务器运行时显示状态栏通知可以从状态栏停止服务器在主屏幕上显示有关如何连接的信息服务器运行时可选的唤醒锁,以避免上载和下载被中止通过sftp的可选加密服务器可以宣布sftp...
8. **Notifications**:通知是与用户交互的重要方式,即使应用在后台运行,也能通过通知栏传达信息。 9. **Multimedia Support**:Android提供了多媒体支持,包括音频、视频的编码解码,以及相机的访问。 10. **...
9. **通知和推送**:Android的通知系统允许应用在状态栏上显示消息,而GCM(Google Cloud Messaging)或FCM(Firebase Cloud Messaging)用于实现远程推送通知。 10. **权限管理**:Android 6.0及以上版本引入了...
- **用户界面规范**:例如状态栏图标样式、通知栏设计等。 - **性能指标**:定义了设备在处理速度、响应时间等方面的具体指标。 - **安全性要求**:包括数据加密、权限管理等方面的细节。 #### 四、设备实现者与...
- `subtitle`:可能包含扩展的子标题或者与翻译相关的辅助文本,比如翻译状态提示等。 - `badge-icons`:扩展图标的文件夹,这些图标会在浏览器工具栏上显示,可能有不同的状态(如未读通知、翻译中、已翻译等)。...
- `OnNcPaint`: 绘制非客户区,如标题栏和边框。 `CWnd`类的函数涵盖了窗口生命周期的各个方面,从创建、显示到用户交互,再到窗口销毁。掌握这些函数及其用途是VC++窗口编程的基础。通过学习这个300多个函数的...
变更日志:v.0.1.8:-修复了由新的Chrome工具栏v.0.1.7引入的徽章更新问题:-修复了上一版本v.0.1.6:-错误修复了v.0.1.5:-重建了存储访问权限(设置/选项)v.0.1.4:-朋友数(在线和游戏中)桌面通知-在安装/更新v...
IME UI是IME的一个重要组成部分,用于提供用户界面元素,如候选窗口、状态栏等。每个IME都需要注册自己的UI,并处理相关的UI消息。 - **UI注册**:在DLL_PROCESS_ATTACH事件中,IME需要注册自己的UI窗口类。 - **UI...
5. **状态栏消息提示**:状态栏通常位于窗口底部,用于显示辅助信息或提示。开发者可以使用`CStatusBarCtrl`类来创建和管理状态栏,并通过实时更新文本或图标来提供反馈。 在提供的压缩包文件中,我们可以看到以下...
13. **Notification**:用于在状态栏展示应用的通知,是与用户交互的重要手段。 14. **App组件间通信**:理解如何通过Intent在Activity、Service、BroadcastReceiver和ContentProvider之间进行通信。 15. **Gradle...
- **通知管理器 (Notification Manager)**:允许所有应用程序在状态栏上显示自定义的通知。 - **活动管理器 (Activity Manager)**:管理应用程序的生命周期并提供公共的后台导航栈。 **3. 库文件 (Libraries)** ...