热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

Android编程实现通知栏进度条效果的方法示例

这篇文章主要介绍了Android编程实现通知栏进度条效果的方法,结合实例形式较为详细的分析了Android通知栏进度条效果的功能、布局相关实现方法与操作注意事项,需要的朋友可以参考下

本文实例讲述了Android编程实现通知栏进度条效果的方法。分享给大家供大家参考,具体如下:

/**
 * 通知管理工具类
 * 
 * @description:
 * @author ldm
 * @date 2016-5-3 上午9:39:56
 */
public class NotificationUtil {
  private Context mContext;
  // NotificationManager : 是状态栏通知的管理类,负责发通知、清楚通知等。
  private NotificationManager manager;
  // 定义Map来保存Notification对象
  private Map map = null;
  public NotificationUtil(Context context) {
    this.mCOntext= context;
    // NotificationManager 是一个系统Service,必须通过 getSystemService()方法来获取。
    manager = (NotificationManager) mContext
        .getSystemService(Context.NOTIFICATION_SERVICE);
    map = new HashMap();
  }
  public void showNotification(int notificationId) {
    // 判断对应id的Notification是否已经显示, 以免同一个Notification出现多次
    if (!map.containsKey(notificationId)) {
      // 创建通知对象
      Notification notification = new Notification();
      // 设置通知栏滚动显示文字
      notification.tickerText = "开始下载xx文件";
      // 设置显示时间
      notification.when = System.currentTimeMillis();
      // 设置通知显示的图标
      notification.icon = R.drawable.ic_launcher;
      // 设置通知的特性: 通知被点击后,自动消失
      notification.flags = Notification.FLAG_AUTO_CANCEL;
      // 设置点击通知栏操作
      Intent in = new Intent(mContext, MainActivity.class);// 点击跳转到指定页面
      PendingIntent pIntent = PendingIntent.getActivity(mContext, 0, in,
          0);
      notification.cOntentIntent= pIntent;
      // 设置通知的显示视图
      RemoteViews remoteViews = new RemoteViews(
          mContext.getPackageName(),
          R.layout.notification_contentview);
      // 设置暂停按钮的点击事件
      Intent pause = new Intent(mContext, MainActivity.class);// 设置跳转到对应界面
      PendingIntent pauseIn = PendingIntent.getActivity(mContext, 0, in,
          0);
      // 这里可以通过Bundle等传递参数
      remoteViews.setOnClickPendingIntent(R.id.pause, pauseIn);
      /********** 简单分隔 **************************/
      // 设置取消按钮的点击事件
      Intent stop = new Intent(mContext, MainActivity.class);// 设置跳转到对应界面
      PendingIntent stopIn = PendingIntent
          .getActivity(mContext, 0, in, 0);
      // 这里可以通过Bundle等传递参数
      remoteViews.setOnClickPendingIntent(R.id.cancel, stopIn);
      // 设置通知的显示视图
      notification.cOntentView= remoteViews;
      // 发出通知
      manager.notify(notificationId, notification);
      map.put(notificationId, notification);// 存入Map中
    }
  }
  /**
   * 取消通知操作
   * 
   * @description:
   * @author ldm
   * @date 2016-5-3 上午9:32:47
   */
  public void cancel(int notificationId) {
    manager.cancel(notificationId);
    map.remove(notificationId);
  }
  public void updateProgress(int notificationId, int progress) {
    Notification notify = map.get(notificationId);
    if (null != notify) {
      // 修改进度条
      notify.contentView.setProgressBar(R.id.pBar, 100, progress, false);
      manager.notify(notificationId, notify);
    }
  }
}

布局文件notification_contentview.xml


  
  
    
    

Activity中简单测试发通知,项目中根据需要使用,比如文件下载中要更新进度,取消时进行对应操作等。

/**
 * Notification是Android项目中具体的状态栏通知对象,可以设置icon、文字、提示声音、振动等等参数。
 * 常用属性:
 * icon:设置通知上显示的图标
 * tickerText:设置通知中滚动显示的文字 
 * text:设置通知的内容
 * flags:设置通知的特性
 * defaults:设置通知默认效果
 * when:设置通知显示的时间
 * contentView:设置通知显示的内容视图
 * sound:设置通知的声音
 * contentIntent:设置点击通知时的跳转等操作
 */
/**
 * 在通知栏中实现下载进度条样式展示Demo
 * 
 * @description:
 * @author ldm
 * @date 2016-5-3 上午8:40:37
 */
public class MainActivity extends ActionBarActivity {
  private NotificationUtil mNotificationUtil;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mNotificatiOnUtil= new NotificationUtil(this);
    findViewById(R.id.send).setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
        mNotificationUtil.showNotification(100);// 测试发出通知
      }
    });
  }
}

Android通知功能可以参考前面一篇https://www.jb51.net/article/85807.htm

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》

希望本文所述对大家Android程序设计有所帮助。


推荐阅读
  • 本文探讨了资源访问的学习路径与方法,旨在帮助学习者更高效地获取和利用各类资源。通过分析不同资源的特点和应用场景,提出了多种实用的学习策略和技术手段,为学习者提供了系统的指导和建议。 ... [详细]
  • 在更换电脑或重装系统时,用户经常需要处理诸如备份收藏夹、电子邮件、用户配置文件和常用文档等任务。尽管这些操作并不复杂,但却相当繁琐。本文介绍了一种利用Windows 7中的“轻松传送”功能,高效便捷地在两台电脑之间同步数据的方法,大大简化了这一过程。 ... [详细]
  • 本文深入探讨了Java多线程环境下的同步机制及其应用,重点介绍了`synchronized`关键字的使用方法和原理。`synchronized`关键字主要用于确保多个线程在访问共享资源时的互斥性和原子性。通过具体示例,如在一个类中使用`synchronized`修饰方法,展示了如何实现线程安全的代码块。此外,文章还讨论了`ReentrantLock`等其他同步工具的优缺点,并提供了实际应用场景中的最佳实践。 ... [详细]
  • 在 Android 应用开发中,实现全屏模式和无标题栏设计是提升用户体验的重要手段。本文详细介绍了如何通过 Java 代码实现取消标题栏 `this.requestWindowFeature(Window.FEATURE_NO_TITLE)`,并进一步探讨了全屏模式的多种实现方法和最佳实践,帮助开发者打造更加沉浸式和美观的用户界面。 ... [详细]
  • ButterKnife 是一款用于 Android 开发的注解库,主要用于简化视图和事件绑定。本文详细介绍了 ButterKnife 的基础用法,包括如何通过注解实现字段和方法的绑定,以及在实际项目中的应用示例。此外,文章还提到了截至 2016 年 4 月 29 日,ButterKnife 的最新版本为 8.0.1,为开发者提供了最新的功能和性能优化。 ... [详细]
  • REST与RPC:选择哪种API架构风格?
    在探讨REST与RPC这两种API架构风格的选择时,本文首先介绍了RPC(远程过程调用)的概念。RPC允许客户端通过网络调用远程服务器上的函数或方法,从而实现分布式系统的功能调用。相比之下,REST(Representational State Transfer)则基于资源的交互模型,通过HTTP协议进行数据传输和操作。本文将详细分析两种架构风格的特点、适用场景及其优缺点,帮助开发者根据具体需求做出合适的选择。 ... [详细]
  • 在 CentOS 6.5 系统上部署 VNC 服务器的详细步骤与配置指南
    在 CentOS 6.5 系统上部署 VNC 服务器时,首先需要确认 VNC 服务是否已安装。通常情况下,VNC 服务默认未安装。可以通过运行特定的查询命令来检查其安装状态。如果查询结果为空,则表明 VNC 服务尚未安装,需进行手动安装。此外,建议在安装前确保系统的软件包管理器已更新至最新版本,以避免兼容性问题。 ... [详细]
  • 如何高效地安装并配置 PostgreSQL 数据库系统?本文将详细介绍从下载到安装、配置环境变量、初始化数据库、以及优化性能的全过程,帮助读者快速掌握 PostgreSQL 的核心操作与最佳实践。文章还涵盖了常见问题的解决方案,确保用户在部署过程中能够顺利解决遇到的各种挑战。 ... [详细]
  • SSAS入门指南:基础知识与核心概念解析
    ### SSAS入门指南:基础知识与核心概念解析Analysis Services 是一种专为决策支持和商业智能(BI)解决方案设计的数据引擎。该引擎能够为报告和客户端应用提供高效的分析数据,并支持在多维数据模型中构建高性能的分析应用。通过其强大的数据处理能力和灵活的数据建模功能,Analysis Services 成为了现代 BI 系统的重要组成部分。 ... [详细]
  • 本文探讨了如何有效地构建和优化微信公众平台账号,涵盖了用户信息管理、内容创作与发布、互动策略及数据分析等方面。通过合理设置用户信息字段,如用户名、昵称、密码、真实姓名和性别等,确保账号的安全性和用户体验。同时,文章还介绍了如何利用微信公众平台的各项功能,提升用户参与度和品牌影响力。 ... [详细]
  • JavaScript XML操作实用工具类:XmlUtilsJS技巧与应用 ... [详细]
  • 在前文探讨了Spring如何为特定的bean选择合适的通知器后,本文将进一步深入分析Spring AOP框架中代理对象的生成机制。具体而言,我们将详细解析如何通过代理技术将通知器(Advisor)中包含的通知(Advice)应用到目标bean上,以实现切面编程的核心功能。 ... [详细]
  • 本文详细介绍了如何安全地手动卸载Exchange Server 2003,以确保系统的稳定性和数据的完整性。根据微软官方支持文档(https://support.microsoft.com/kb833396/zh-cn),在进行卸载操作前,需要特别注意备份重要数据,并遵循一系列严格的步骤,以避免对现有网络环境造成不利影响。此外,文章还提供了详细的故障排除指南,帮助管理员在遇到问题时能够迅速解决,确保整个卸载过程顺利进行。 ... [详细]
  • 从文本中全面提取所有URL链接
    本文探讨了一种高效的方法,用于从大量文本数据中全面提取所有URL链接。通过使用正则表达式和Python编程语言,该方法能够准确识别并提取出各种格式的URL,包括HTTP、HTTPS等常见协议。实验结果表明,该方法在处理大规模文本数据时具有较高的准确率和效率。 ... [详细]
  • Python 实战:异步爬虫(协程技术)与分布式爬虫(多进程应用)深入解析
    本文将深入探讨 Python 异步爬虫和分布式爬虫的技术细节,重点介绍协程技术和多进程应用在爬虫开发中的实际应用。通过对比多进程和协程的工作原理,帮助读者理解两者在性能和资源利用上的差异,从而在实际项目中做出更合适的选择。文章还将结合具体案例,展示如何高效地实现异步和分布式爬虫,以提升数据抓取的效率和稳定性。 ... [详细]
author-avatar
naniwang99_537_742
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有