• 【起航计划 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。

  • 相关阅读:
    C#模拟百度登录并到指定网站评论回帖(一)
    4张图看明白用户、权限和租户的关系
    我的微服务之路
    IT部门不应该是一个后勤部门
    一个值只有0和1的字段,到底要不要建索引?
    论程序员的自我修养
    RBAC权限管理系统数据模型
    有史以来功能最全,使用最简单的excel导入/导出工具
    一个完全平均分布的固定长度随机数发生器
    基于WCF的RESTFul WebAPI如何对传输内容实现压缩
  • 原文地址:https://www.cnblogs.com/dongdong230/p/4318782.html
Copyright © 2020-2023  润新知