美文网首页
通知Notification

通知Notification

作者: 30cf443c3643 | 来源:发表于2018-09-10 10:00 被阅读26次

    通过建造者模式来创建通知。
    为了兼容低版本,v4 Support Library中提供了
    NotificationCompat.Builder()这个替代方法。
    它与Notification.Builder()类似,二者没有太大区别。

    通知基本用法

    属性

    • setSmallIcon 小图标
    • setContentTitle 标题
    • setContentText 详细信息
    • setAutoCancel(boolean) 是否点击通知自动取消
    • setOngoing(boolean) 设置是否不能消除该通知; 利用它设置他为一个正在进行的通知。他们通常是用来表示一个后台任务,用户积极参与(如播放音乐)或以某种方式正在等待,因此占用设备(如一个文件下载,同步操作,主动网络连接)
    • setWhen() 时间,如果不设置,则默认显示当前的系统时间
    • setContentIntent(pendingIntent) 设置意图
    • setPriority(Notification.PRIORITY_DEFAULT) 设置该通知优先级
    • setDefaults 向通知添加声音、闪灯和震动效果,最简单、最一致的方式是使用当前的用户默认设置,使用defaults属性
    Notification.DEFAULT_VISIBLE //添加默认震动提醒 需要VIBRATE permission
    Notification.DEFAULT_SOUND //添加默认声音提醒
    Notification.DEFAULT_LIGHTS //添加默认三色灯提醒
    Notification.DEFAULT_ALL //添加默认以上三种全部提醒
    
    • setUsesChronometer 是否显示时间计时
    • setProgress(intmax, int progress, boolean indeterminate) 设置进度, indeterminate 表示是否是不明确的进度条。可以通过setProgress(0,0,false)移除进度条
    • setContentIntent(PendingIntent intent) 功能:设置通知栏点击意图。
    • addAction 向通知添加操作,操作通常与通知的content相连被系统作为按钮来显示。在系统的content下方显示图片与title,点击这个图片或者title就会触发设置的intent
    • setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.wechat));
    2018-09-04_105303.png
    • setStyle 设置风格
    NotificationCompat.BigPictureStyle inboxStyle = new NotificationCompat.BigPictureStyle();
    inboxStyle.setBigContentTitle("大视图内容");
    inboxStyle.bigPicture(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher));
    inboxStyle.bigLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher_round));
    
    or
    
    builder.setStyle(new Notification.InboxStyle()
                            .addLine("abcdefg")
                            .addLine("hijklmn")
                            .setBigContentTitle("6 new message")
                            .setSummaryText("大概内容"));
    
    164f459d6790c0e2.gif

    PendingIntent

    • FLAG_CANCEL_CURRENT:如果要创建的PendingIntent已经存在了,那么在创建新的PendingIntent之前,原先已经存在的PendingIntent中的intent将不能使用
    • FLAG_NO_CREATE:如果要创建的PendingIntent尚未存在,则不创建新的PendingIntent,直接返回null
    • FLAG_ONE_SHOT:相同的PendingIntent只能使用一次,且遇到相同的PendingIntent时不会去更新PendingIntent中封装的Intent的extra部分的内容
    • FLAG_UPDATE_CURRENT:如果要创建的PendingIntent已经存在了,那么在保留原先PendingIntent的同时,将原先PendingIntent封装的Intent中的extra部分替换为现在新创建的PendingIntent的intent中extra的内容

    浮动通知

    以横幅的形式 在屏幕顶端悬浮显示。
    通过setFullScreenIntent()设置。需要注意的是,可能需要去设置通知的横幅显示或者锁屏显示。
    试验的时候,在模拟器上可以弹出浮动通知,然后可能还需要手动的去取消。但是真机上总是直接跳pendingIntent的内容,未找到原因!

    自定义视图

    通过RemoteViews来创建视图

    RemoteViews mRemoteViews = new RemoteViews(String packageName, int layoutId);

    设置的图片属性

    mRemoteViews.setImageViewResource(int viewId, int srcId);

    设置点击意图:

    mRemoteViews.setOnClickPendingIntent(int viewId,PendingIntent pendingIntent);

    设置文字

    mRemoteViews.setTextViewText(R.id.tv_custom_song_singer, "周杰伦");

    与builder关联

    builder.setCustomContentView()

    参考
    Android Notification常见样式总结

    相关文章

      网友评论

          本文标题:通知Notification

          本文链接:https://www.haomeiwen.com/subject/qqhgwftx.html