这个例子的Icons Only 和 Icons and marquee 没有什么特别好说明的。
而Use Remote views in balloon 介绍了可以自定义在Extended Status bar显示Notification的Layout,Extended Status Bar缺省显示Notification 是一个图标后接文字,对应大多数情况是够用了。但如果有需要也可以使用自定义的Layout在Extented Status bar显示Notification,方法是通过RemoteView:
private void setMoodView(int moodId, int textId) {// Instead of the normal constructor, we're going to use the one with no args and fill// in all of the data ourselves. The normal one uses the default layout for notifications.// You probably want that in most cases, but if you want to do something custom, you// can set the contentView field to your own RemoteViews object.Notification notif = new Notification();// This is who should be launched if the user selects our notification.notif.contentIntent = makeMoodIntent(moodId);// In this sample, we'll use the same text for the ticker and the expanded notificationCharSequence text = getText(textId);notif.tickerText = text;// the icon for the status barnotif.icon = moodId;// our custom view
RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.status_bar_balloon);contentView.setTextViewText(R.id.text, text);contentView.setImageViewResource(R.id.icon, moodId);notif.contentView = contentView;// we use a string id because is a unique number. we use it later to cancel the// notification
mNotificationManager.notify(MOOD_NOTIFICATIONS, notif);}
为了和缺省的Status Bar Layout有所区别,我们在/res/status_bar_balloon.xml 在增加一个ImageView:左右各显示一个图标,中间为文字。
android:orientation=”horizontal”
android:baselineAligned=”false”
android:gravity=”center_vertical”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”>
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_marginRight=”10dip” />
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:textColor=”#ffffffff” />
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_marginRight=”10dip” />
Use default values where applicable 介绍使用缺省声音,震动或是两者的方法:
int default = Notification.DEFAULT_SOUND;
//Notification.DEFAULT_SOUND
//Notification.DEFAULT_VIBRATE
//Notification.DEFAULT_ALL
notification.defaults = defaults;
注:例子中使用了同样的Notification ID :R.layout.status_bar_notifications ,因此每次调用mNotificationManager.notify 都会更新同一个Notification。