【起航计划 026】2015 起航计划 Android APIDemo的魔鬼步伐 25 App->Notification->Status Bar 状态栏显示自定义的通知布局,省却声音、震动

这个例子的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 notification

        CharSequence text = getText(textId);

        notif.tickerText = text;



        // the icon for the status bar

        notif.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:左右各显示一个图标,中间为文字。

<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”

android:orientation=”horizontal”

android:baselineAligned=”false”

android:gravity=”center_vertical”

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”>



<ImageView android:id=”@+id/icon”

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”

android:layout_marginRight=”10dip” />

<TextView android:id=”@+id/text”

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”

android:textColor=”#ffffffff” />

<ImageView android:id=”@+id/icon1″

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”

android:layout_marginRight=”10dip” />



</LinearLayout>

 

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。

 

你可能感兴趣的:(notification)