• Android 通知之 Notification


    Notifications | Android Developers
    http://developer.android.com/guide/topics/ui/notifiers/notifications.html#NotificationResponse

    Android--通知之Notification
    http://www.cnblogs.com/plokmju/p/android_Notification.html

    小图标,使用setSamllIcon()方法设置。
    标题,使用setContentTitle()方法设置。
    文本内容,使用setContentText()方法设置。

    PendingIntent提供了多个静态的getXxx()方法,用于获得适用于不同场景的PendingIntent对象。一般需要传递的几个参数都很常规,只介绍一个flag参数,用于标识PendingIntent的构造选择:
    FLAG_CANCEL_CURRENT:如果构建的PendingIntent已经存在,则取消前一个,重新构建一个。
    FLAG_NO_CREATE:如果前一个PendingIntent已经不存在了,将不再构建它。
    FLAG_ONE_SHOT:表明这里构建的PendingIntent只能使用一次。
    FLAG_UPDATE_CURRENT:如果构建的PendingIntent已经存在,则替换它,常用。

    Notification视觉风格
      Notification有两种视觉风格,一种是标准视图(Normal view)、一种是大视图(Big view)。标准视图在Android中各版本是通用的,但是对于大视图而言,仅支持Android4.1+的版本。

    从官方文档了解到,一个标准视图显示的大小要保持在64dp高,宽度为屏幕标准。
    标准视图的通知主体内容有一下几个:
    1.通知标题。
    2.大图标。
    3.通知内容。
    4.通知消息。
    5.小图标。
    6.通知的时间,一般为系统时间,也可以使用setWhen()设置。

    而对于大视图(Big View)而言,它的细节区域只能显示256dp高度的内容,并且只对Android4.1+之后的设备才支持,它比标准视图不一样的地方,均需要使用setStyle()方法设定

    setStyle()传递一个NotificationCompat.Style对象,它是一个抽象类,Android为我们提供了三个实现类,用于显示不同的场景。分别是:

    setStyle()传递一个NotificationCompat.Style对象,它是一个抽象类,Android为我们提供了三个实现类,用于显示不同的场景。分别是:

    NotificationCompat.BigPictureStyle, 在细节部分显示一个256dp高度的位图。
    NotificationCompat.BigTextStyle,在细节部分显示一个大的文本块。
    NotificationCompat.InboxStyle,在细节部分显示一段行文本。

    Notification.Builder类中提供一个setProgress(int max,int progress,boolean indeterminate)方法用于设置进度条,max用于设定进度的最大数,progress用于设定当前的进度,indeterminate用于设定是否是一个确定进度的进度条。通过indeterminate的设置,可以实现两种不同样式的进度条,一种是有进度刻度的(true),一种是循环流动的(false)。

    一种是有进度刻度的(false),一种是循环流动的(true
    builder.setProgress(0, 0, true);//设置为true,表示流动
    builder.setProgress(100, 100, false);//设置为false,表示刻度

    RemoteViews contentViews = new RemoteViews(getPackageName(),
    R.layout.custom_notification);
    contentViews.setImageViewResource(R.id.imageNo, R.drawable.btm1);
    contentViews.setTexViewText(R.id.titleNo, "xxx");
    contentViews.setTexViewText(R.id.textNo, "xxx");

    NotificationCompat.Builder.setContent(RemoteViews)

    设定提示响应
    对于有些通知,需要调用一些设备的资源,使用户能更快的发现有新通知,一般可设定的响应有:铃声、闪光灯、震动。对于这三个属性,NotificationCompat.Builder提供了三个方法设定:
    可设定的响应有:铃声、闪光灯、震动

    setSound(Uri sound):设定一个铃声,用于在通知的时候响应。传递一个Uri的参数,格式为“file:///mnt/sdcard/Xxx.mp3”。
    setLights(int argb, int onMs, int offMs):设定前置LED灯的闪烁速率,持续毫秒数,停顿毫秒数。
    setVibrate(long[] pattern):设定震动的模式,以一个long数组保存毫秒级间隔的震动。
      大多数时候,我们并不需要设定一个特定的响应效果,只需要遵照用户设备上系统通知的效果即可,那么可以使用setDefaults(int)方法设定默认响应参数,在Notification中,对它的参数使用常量定义了,我们只需使用即可:

    DEFAULT_ALL:铃声、闪光、震动均系统默认。
    DEFAULT_SOUND:系统默认铃声。
    DEFAULT_VIBRATE:系统默认震动。
    DEFAULT_LIGHTS:系统默认闪光。


      而在Android中,如果需要访问硬件设备的话,是需要对其进行授权的,所以需要在清单文件AndroidManifest.xml中增加两个授权,分别授予访问振动器与闪光灯的权限:

    1 <!-- 闪光灯权限 -->
    2 <uses-permission android:name="android.permission.FLASHLIGHT"/>
    3 <!-- 振动器权限 -->
    4 <uses-permission android:name="android.permission.VIBRATE"/>

  • 相关阅读:
    [LeetCode] 1268. Search Suggestions System
    [LeetCode] 907. Sum of Subarray Minimums
    [LeetCode] 2034. Stock Price Fluctuation
    [LeetCode] 792. Number of Matching Subsequences
    [LeetCode] 212. Word Search II
    [LeetCode] 828. Count Unique Characters of All Substrings of a Given String
    [LeetCode] 408. Valid Word Abbreviation
    [LeetCode] 1161. Maximum Level Sum of a Binary Tree
    [LeetCode] 1152. Analyze User Website Visit Pattern
    [LeetCode] 636. Exclusive Time of Functions
  • 原文地址:https://www.cnblogs.com/bluestorm/p/3746161.html
Copyright © 2020-2023  润新知