android 通知
https://developer.android.com/design/patterns/notifications.html
通知系统可让用户随时了解应用中的相关和即时事件,例如来自好友的新聊天信息或日历事件。可将通知视作新闻频道,在重要的事件发生时提醒用户注意,或者当作日志,在用户未注意时记录事件—可在用户的所有 Android 设备上按需同步。
Android 5.0 新增内容
在 Android 5.0 中,通知在结构、外观和功能方面获得了重要的更新:
- 通知在外观上发生了更改,与新的材料设计主题保持一致。
- 通知现在可以在设备锁定屏幕上使用,而敏感信息仍然可以隐藏于背后。
- 设备在使用时收到的高优先级通知现在采用名为浮动通知的新格式。
- 云同步通知:在一台 Android 设备上清除通知,则在其他设备上也会将其清除。
注:该版本 Android 的通知设计与之前的版本大不相同。 有关之前版本通知设计的信息,请参阅Android 4.4 及更低版本中的通知。
通知详解
本部分介绍通知的基本组成部分,及其在不同类型设备上显示的方式。
基本布局
所有通知至少要包括一个基本布局,包括:
- 通知的图标。图标以符号形式表示来源应用。如果应用生成多个类型的通知,它也可用于指明通知类型。
- 通知标题以及其他 文本。
- 时间戳。
利用 Notification.Builder为之前版本平台创建的通知,其外观和行为方式与在 Android 5.0 中完全相同,唯一的变动在于系统为您处理通知的方式存在细微的样式变动。 如需了解之前 Android 版本通知设计的详细信息,请参阅Android 4.4 及更低版本中的通知。
===============================================================================================================================================
处理兼容性
并非所有通知功能都可用于某特定版本,即便用于设置这些功能的方法位于支持库类 NotificationCompat.Builder 中也是如此。 例如,依赖于扩展通知的操作按钮仅会显示在 Android 4.1 及更高版本的系统中,这是因为扩展通知本身仅在 Android 4.1 及更高版本的系统中可用。
为了确保最佳兼容性,请使用 NotificationCompat 及其子类(特别是 NotificationCompat.Builder)创建通知。此外,在实现通知时,请遵循以下流程:
- 为所有用户提供通知的全部功能,无论他们使用何种版本的 Android 系统。 为此,请验证是否可从应用的
Activity中获得所有功能。要执行此操作,您可能需要添加新的Activity。例如,若要使用
addAction()提供停止和启动媒体播放的控件,请先在应用的Activity中实现此控件。 - 确保所有用户均可通过点击通知启动
Activity来获得该Activity中的功能。 为此,请为Activity创建PendingIntent。调用setContentIntent()以将PendingIntent添加到通知。 - 现在,将要使用的扩展通知功能添加到通知。请记住,您添加的任何功能还必须在用户点击通知时启动的
Activity中可用
在通知中显示进度
通知可能包括动画形式的进度指示器,向用户显示正在进行的操作状态。 如果您可以估计操作所需的时间以及任意时刻的完成进度,则使用“限定”形式的指示器(进度栏)。 如果无法估计操作的时长,则使用“非限定”形式的指示器(Activity 指示器)。
平台的 ProgressBar 类实现中显示有进度指示器。
要在 Android 4.0 及更高版本的平台上使用进度指示器,需调用 setProgress()。对于早期版本,您必须创建包括 ProgressBar 视图的自定义通知布局。
下文介绍如何使用 setProgress() 在通知中显示进度。
显示持续时间固定的进度指示器
要显示限定形式的进度栏,请通过调用 setProgress(max, progress, false) 将进度栏添加到通知,然后发出通知。随着操作继续进行,递增 progress并更新通知。操作结束时, progress 应该等于 max。调用 setProgress() 的常见方法是将 max 设置为 100,然后将 progress 作为操作的“完成百分比”值递增。
您可以在操作完成后仍保留显示进度栏,也可以将其删除。无论哪种情况,都请记住更新通知文本以显示操作已完成。 要删除进度栏,请调用setProgress(0, 0, false)。例如:
...
mNotifyManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mBuilder = new NotificationCompat.Builder(this);
mBuilder.setContentTitle("Picture Download")
.setContentText("Download in progress")
.setSmallIcon(R.drawable.ic_notification);
// Start a lengthy operation in a background thread
new Thread(
new Runnable() {
@Override
public void run() {
int incr;
// Do the "lengthy" operation 20 times
for (incr = 0; incr <= 100; incr+=5) {
// Sets the progress indicator to a max value, the
// current completion percentage, and "determinate"
// state
mBuilder.setProgress(100, incr, false);
// Displays the progress bar for the first time.
mNotifyManager.notify(0, mBuilder.build());
// Sleeps the thread, simulating an operation
// that takes time
try {
// Sleep for 5 seconds
Thread.sleep(5*1000);
} catch (InterruptedException e) {
Log.d(TAG, "sleep failure");
}
}
// When the loop is finished, updates the notification
mBuilder.setContentText("Download complete")
// Removes the progress bar
.setProgress(0,0,false);
mNotifyManager.notify(ID, mBuilder.build());
}
}
// Starts the thread by calling the run() method in its Runnable
).start();
1.https://developer.android.com/reference/android/app/Notification.html
2.https://developer.android.com/reference/android/app/NotificationManager.html
3.https://developer.android.com/guide/topics/ui/notifiers/notifications.html#CreateNotification
4.https://developer.android.com/reference/android/support/v4/app/NotificationCompat.Builder.html
5.https://developer.android.com/training/material/index.html
android 通知的更多相关文章
- Xamarin.Android通知详解
一.发送通知的机制 在日常的app应用中经常需要使用通知,因为服务.广播后台活动如果有事件需要通知用户,则需要通过通知栏显示,而在Xamarin.Android下的通知需要获取Notification ...
- android通知-Notification
android中,当app需要向发送一些通知,让使用者注意到你想要告知的信息时,可以用Notification.下面,就来讨论一下,Notification的用法,我们从实际的小例子来进行学习. 1. ...
- Android 通知 相关api记录
记录帖 通知(Notification) 的API 1.使用getSystemService()方法获取系统服务,参数接收一个字符串来确定获取具体的服务,使用通知传入Content.NOTIFICAT ...
- Android通知Notification全面剖析
通知 通知是您可以在应用的常规 UI 外部向用户显示的消息.当您告知系统发出通知时,它将先以图标的形式显示在通知区域中.用户可以打开抽屉式通知栏查看通知的详细信息. 通知区域和抽屉式通知栏均是由系统控 ...
- Android 通知之 Notification
Notifications | Android Developershttp://developer.android.com/guide/topics/ui/notifiers/notificatio ...
- Android 通知机制 Toast和Notification
Android常用的反馈系统状态信息的方式主要有三种 Toast提醒 通知栏提醒 对话框提醒 三种提醒分别适用于页面的提示.系统交互事件的通知和非常重要的提醒: 一.Toast Toast toast ...
- Android 通知(Notification)
1.介绍 2.常用属性 3.java后台代码 package com.lucky.test30notification; import android.app.Notification; import ...
- android ——通知管理
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle saved ...
- Android 通知的基本用法
一.概念 通知(Notification)是 Android 系统中比较有特色的一个功能,当某个应用程序希望像用户发送一些提示消息的时候,然而此时应用程序并不在前台运行,此时就可以借助通知来实现.发出 ...
随机推荐
- codeforces 192e
link: http://codeforces.com/contest/330/problem/E /* ID: zypz4571 LANG: C++ TASK: 192e.cpp */ #inclu ...
- java03实验截图
- 传统解析xml的方式
1. 介绍 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这个层次结构允 ...
- leetcode 135. Candy ----- java
There are N children standing in a line. Each child is assigned a rating value. You are giving candi ...
- leetcode 100 Same Tree ----- java
Given two binary trees, write a function to check if they are equal or not. Two binary trees are con ...
- Jquery实现图片的预加载与延时加载
有很多项目经常会需要判断图片加载完成后执行相应的操作,或者需要图片延迟加载,网上虽然已经有很不错的插件,但要为这些效果还得单独加载一个插件的话总感觉有点不舒服,干脆自己写了个方法: 1 2 3 4 5 ...
- 黑马程序员——JAVA基础之简述 类的继承、覆写
------- android培训.java培训.期待与您交流! ---------- 继承的概述: 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只 ...
- svn tree conflicts 解决方法
svn resolve --accept working -R XXX. 其中XXX为提示冲突的目录.
- rac 11g_生产库日志组损坏处理
原创作品,出自 "深蓝的blog" 博客,转载时请务必注明出处,否则有权追究版权法律责任. 深蓝的blog:http://blog.csdn.net/huangyanlong/ar ...
- Linux查看端口使用状态、关闭端口方法
前提:首先你必须知道,端口不是独立存在的,它是依附于进程的.某个进程开启,那么它对应的端口就开启了,进程关闭,则该端口也就关闭了.下次若某个进程再次开启,则相应的端口也再次开启.而不要纯粹的理解为关闭 ...