Android官方开发文档Training系列课程中文版:通知用户之在通知中显示进度

原文地址:http://android.xsoftlab.net/training/notify-user/display-progress.html#FixedProgress

通知中包含了一个进度指示器,用来向用户展示一项正在进行中的工作状态。如果你可以确保任务会花费多长时间,并且可以在任何时候得知它完成了多少工作,那么就可以使用确定样式的指示器(一个进度条)。如果不能确定任务需要花费的时间,可以使用不确定样式的指示器(一个活动的指示器)。

进度指示器由ProgressBar类实现。

使用进度指示器,可以调用setProgress()方法。确定样式与不确定样式会在下面的章节中讨论。

显示确定进度指示器

为了显示确定进度指示器,需要调用setProgress(max, progress, false)方法将指示器添加到通知上,然后再将该通知发布出去。该方法的第三个参数用于指示该进度条是确定性进度条(true)还是不确定性进度条(false)。随着操作的处理,进度progress会增长,这时需要更新通知。在操作结束时,progress应该等于max。一种常规的方式是将max设置为100,然后将progress以百分比的形式自增。

你也可以选择在任务完成的时候将进度条取消显示或者移除通知。在前一种情况中,要记得更新通知的文本,告诉用户任务已完成。后一种情况中,调用setProgress(0, 0, false)就可以完成通知的移除。

int id = 1;
...
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() {@Overridepublic void run() {int incr;// Do the "lengthy" operation 20 timesfor (incr = 0; incr <= 100; incr+=5) {// Sets the progress indicator to a max value, the// current completion percentage, and "determinate"// statemBuilder.setProgress(100, incr, false);// Displays the progress bar for the first time.mNotifyManager.notify(id, mBuilder.build());// Sleeps the thread, simulating an operation// that takes timetry {// Sleep for 5 secondsThread.sleep(5*1000);} catch (InterruptedException e) {Log.d(TAG, "sleep failure");}}// When the loop is finished, updates the notificationmBuilder.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();

最终的效果如下图所示:

左边的图显示了正在进行中的通知,而右边的图显示了任务完成后的通知。

显示持续活动的指示器

为了显示不确定性的指示器,需要调用setProgress(0, 0, true)方法将进度条显示在通知中,然后将该通知发布。第一第二个参数将会被忽略,第三个参数决定了该进度条是否是不确定性进度条。最终的显示效果为与常规进度条有相同的显示风格,除了它一直在动之外。

在操作开始之前请发布该通知,进度动画会一直持续运行,直到你修改了通知。当操作完成后,调用setProgress(0, 0, false)方法然后更新通知以便移除活动指示器。否则的话,就算是任务完成后,该动画也不会停止。所以要记得在任务完成后更改通知文本,以便告知用户操作已完成。

// Sets the progress indicator to a max value, the current completion
// percentage, and "determinate" state
mBuilder.setProgress(100, incr, false);
// Issues the notification
mNotifyManager.notify(id, mBuilder.build());

找到前面的代码,将下面部分替换。要记得setProgress()方法的第三个参数为true:

 // Sets an activity indicator for an operation of indeterminate length
mBuilder.setProgress(0, 0, true);
// Issues the notification
mNotifyManager.notify(id, mBuilder.build());

最终的显示效果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/478994.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PDFPlumber使用入门+python实现PDF中表格转化为Excel的方法

PDFPlumber使用入门&#xff1a;https://blog.csdn.net/weixin_48629601/article/details/107224376 python实现PDF中表格转化为Excel的方法:https://cloud.tencent.com/developer/article/1725528

LeetCode 109. 有序链表转换二叉搜索树(快慢指针+递归)

1. 题目 给定一个单链表&#xff0c;其中的元素按升序排序&#xff0c;将其转换为高度平衡的二叉搜索树。 本题中&#xff0c;一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链…

beeshell —— 开源的 React Native 组件库

背景 beeshell 是一个 React Native 应用的基础组件库&#xff0c;基于 0.53.3 版本&#xff0c;提供一整套开箱即用的高质量组件&#xff0c;包含 JavaScript&#xff08;以下简称 JS&#xff09;组件和复合组件&#xff08;包含 Native 代码&#xff09;&#xff0c;涉及前端…

论文浅尝 - ACL2020 | 用于链接预测的开放知识图谱嵌入

本文转载自公众号&#xff1a;PaperWeekly。 作者&#xff1a;舒意恒&#xff0c;南京大学硕士&#xff0c;研究方向&#xff1a;知识图谱。当前大量的知识图谱都是通过文本直接构建的。由于当前的知识图谱构建方法的局限性&#xff0c;其中难免包含对同一实体或关系…

论文审稿人可以下岗了?CMU都做出论文审稿机器人了!

文 | Sheryc_王苏机器学习真是越来越火了&#xff0c;这从各大会议逐年增加的投稿量上就可见一斑&#xff1a;AAAI21收到了9034篇投稿&#xff0c;NeurIPS20收到了9467篇投稿&#xff0c;一篇投稿至少要经过3位审稿人同行评议&#xff0c;耗费的人力可想而知。那么问题来了&…

Android官方开发文档Training系列课程中文版:多样屏幕之支持不同的屏幕尺寸

原文地址&#xff1a;http://android.xsoftlab.net/training/multiscreen/index.html 引言 Android运行于数以百计不同尺寸的设备上。范围小到手持移动电话&#xff0c;大到电视设备。因此&#xff0c;在设计APP时应当兼顾到尽可能多的屏幕尺寸。这样才能照顾到较多的潜在用户…

阿里云开源EasyTransfer:业界首个面向NLP场景深度迁移学习框架

阿里云开源EasyTransfer&#xff1a;业界首个面向NLP场景深度迁移学习框架 原文链接&#xff1a;https://zhuanlan.zhihu.com/p/267392773 阿里云正式开源了深度迁移学习框架 EasyTransfer&#xff0c;本文详细介绍了 EasyTransfer 框架的核心功能。机器之心发布&#xff0c;机…

LeetCode 559. N叉树的最大深度

文章目录1. 题目2. 解题2.1 递归2.2 按层queue遍历1. 题目 给定一个 N 叉树&#xff0c;找到其最大深度。 最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。 2. 解题 2.1 递归 class Solution { public:int maxDepth(Node* root) {if(root NULL)return 0;int …

全链路压测平台(Quake)在美团中的实践

背景 在美团的价值观中&#xff0c;“以客户为中心”被放在一个非常重要的位置&#xff0c;所以我们对服务出现故障越来越不能容忍。特别是目前公司业务正在高速增长阶段&#xff0c;每一次故障对公司来说都是一笔非常不小的损失。而整个IT基础设施非常复杂&#xff0c;包括网络…

Android官方开发文档Training系列课程中文版:多样屏幕之支持不同的屏幕密度

原文地址:http://android.xsoftlab.net/training/multiscreen/screendensities.html 这节课将会学习如何通过不同的资源以及独立的测量单位来支持不同的屏幕密度。 使用密度独立的像素单位 你必须要避免这么一个陷阱&#xff1a;在设计布局时&#xff0c;使用了绝对的像素单…

陈华钧等 | OpenKG区块链:构建可信开放的联邦知识图谱平台

文章导读本文介绍了OpenKG在区块链方向的一些实践和尝试。经过一年努力&#xff0c;OpenKG初步完成了底层区块链平台测试&#xff0c;以及OpenKG数据集、工具集和Openbase细粒度知识众包的上链测试工作。在这个测试平台中&#xff0c;已包含1033位确权的知识贡献者。上链测试两…

ICLR'21 | 一个二值化词向量模型,是怎么跟果蝇搭上关系的?

文&#xff5c;苏剑林&#xff08;追一科技&#xff09; 编 | 小轶可能有些读者最近会留意到ICLR 2021的论文Can a Fruit Fly Learn Word Embeddings?&#xff0c;文中写到它是基于仿生思想&#xff08;仿果蝇的嗅觉回路&#xff09;做出来的一个二值化词向量模型。其实论文的…

如何解决NLP分类任务的11个关键问题:类别不平衡低耗时计算小样本鲁棒性测试检验长文本分类 JayLou娄杰

原文链接&#xff1a;https://zhuanlan.zhihu.com/p/183852900 欢迎关注《高能AI》公众号&#xff5e;声明&#xff1a;文中观点谨代表笔者个人立场&#xff0c;盲目搬运有风险&#xff5e;在2020这个时间节点&#xff0c;对于NLP分类任务&#xff0c;我们的关注重点早已不再是…

LeetCode 908. 最小差值 I

1. 题目 给定一个整数数组 A&#xff0c;对于每个整数 A[i]&#xff0c;我们可以选择任意 x 满足 -K < x < K&#xff0c;并将 x 加到 A[i] 中。 在此过程之后&#xff0c;我们得到一些数组 B。 返回 B 的最大值和 B 的最小值之间可能存在的最小差值。 示例 1&#x…

Android官方开发文档Training系列课程中文版:多样屏幕之实现自适应UI

原文地址&#xff1a;http://android.xsoftlab.net/training/multiscreen/adaptui.html 基于程序当前所显示的布局来说&#xff0c;UI流程可能会有所不同。比如说&#xff0c;如果程序当前处于多面板模式&#xff0c;点击左面板中的项目会直接在右面版中显示具体的内容;如果当…

论文浅尝 - AAAI2020 | 基于知识图谱进行对话目标规划的开放域对话生成技术

论文笔记整理&#xff1a;张傲&#xff0c;天津大学硕士。Knowledge Graph Grounded Goal Planning for Open-Domain Conversation Generation来源&#xff1a;哈工大SCIR动机让机器生成有内容并且主题连贯的多轮开放域对话&#xff0c;是人工智能公认的关键任务之一。针对这一…

一个程序员的“无聊”故事

文 | Cat Chen知乎本文已获作者授权&#xff0c;禁止二次转载不同时期的生活方式是非常不一样的。我觉得最重要的是意识到这一点&#xff0c;不要以为某一种生活方式会一直延续下去。这个世界上不会存在特定的程序员生活方式&#xff0c;你在不同的公司工作就会遇到不一样的公司…

NLP算法岗一年半的工作总结--聊聊什么才是NLP算法工程师的核心竞争力

首发公众号:【 NLP从入门到放弃】--日常更新技术分享先简单自我介绍一下&#xff0c;我任职在一家社交公司&#xff0c;做NLP算法工程师&#xff0c;主要做文本分类&#xff0c;序列标注&#xff0c;文本相似度方向的工作&#xff0c;也做过搜索/推荐方向的需求。工作快有一年半…

LeetCode 349. 两个数组的交集(哈希)

1. 题目 给定两个数组&#xff0c;编写一个函数来计算它们的交集。 示例 1:输入: nums1 [1,2,2,1], nums2 [2,2] 输出: [2] 示例 2:输入: nums1 [4,9,5], nums2 [9,4,9,8,4] 输出: [9,4] 说明:输出结果中的每个元素一定是唯一的。 我们可以不考虑输出结果的顺序。来源&am…

Android官方开发文档Training系列课程中文版:创建自定义View之View的创建

原文地址&#xff1a;http://android.xsoftlab.net/training/custom-views/index.html 引言 Android框架含有大量的View类&#xff0c;这些类用来显示各式各样的数据&#xff0c;并可以直接与用户交互。但是某些时候&#xff0c;APP有一项很特殊的需求&#xff0c;但是框架中…