`
砺雪凝霜
  • 浏览: 156725 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

自定义通知栏

阅读更多

摘自:http://blog.csdn.net/cstarbl/article/details/7200757

通知栏Notification使用自定义视图方法,这里以显示进度条ProgressBar为例,具体效果不上图了,请参考在Android Market下载软件时通知栏的效果。
布局main.xml:

[html] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent"  
  6.     >  
  7. <Button android:id="@+id/bt1"  
  8.         android:layout_height="wrap_content"  
  9.         android:layout_width="fill_parent"  
  10.         android:text="Notification测试"  
  11. />  
  12. <Button android:id="@+id/bt2"  
  13.         android:layout_height="wrap_content"  
  14.         android:layout_width="fill_parent"  
  15.         android:text="清除Notification"  
  16. />  
  17. </LinearLayout>  


自定义通知栏的布局:notification.xml文件,一个TextView显示下载中,下面一根进度条显示当前进度

 

 

[html] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>   
  2. <LinearLayout  
  3.   xmlns:android="http://schemas.android.com/apk/res/android"  
  4.   android:layout_width="wrap_content"  
  5.   android:layout_height="wrap_content"  
  6.   android:orientation="vertical"  
  7.   >  
  8. <TextView android:id="@+id/down_tv"   
  9.                android:layout_width="wrap_content"      
  10.                android:layout_height="fill_parent"   
  11.                android:textSize="20sp"   
  12.                android:textColor="#000000"  
  13.                android:text="下载中"  
  14.                />     
  15. <ProgressBar android:id="@+id/pb"   
  16.              android:layout_width="260dip"   
  17.              android:layout_height="wrap_content"   
  18.              style="?android:attr/progressBarStyleHorizontal"  
  19.              android:layout_gravity="center_vertical"/>            
  20. </LinearLayout>  

程序代码:

[java] view plaincopy
  1. package com.pocketdigi.Notification;  
  2.   
  3. import android.app.Activity;  
  4. import android.app.Notification;  
  5. import android.app.NotificationManager;  
  6. import android.app.PendingIntent;  
  7. import android.content.Intent;  
  8. import android.os.Bundle;  
  9. import android.os.Handler;  
  10. import android.view.View;  
  11. import android.view.View.OnClickListener;  
  12. import android.widget.Button;  
  13. import android.widget.RemoteViews;  
  14.   
  15. public class main extends Activity {  
  16.     /** Called when the activity is first created. */  
  17.         int notification_id=19172439;  
  18.         NotificationManager nm;  
  19.         Handler handler=new Handler();  
  20.         Notification notification;  
  21.         int count=0;  
  22.     @Override  
  23.     public void onCreate(Bundle savedInstanceState) {  
  24.         super.onCreate(savedInstanceState);  
  25.         setContentView(R.layout.main);  
  26.   
  27.         Button bt1=(Button)findViewById(R.id.bt1);  
  28.         bt1.setOnClickListener(bt1lis);  
  29.         Button bt2=(Button)findViewById(R.id.bt2);  
  30.         bt2.setOnClickListener(bt2lis);  
  31.         //建立notification,前面有学习过,不解释了,不懂看搜索以前的文章  
  32.         nm=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);  
  33.             notification=new Notification(R.drawable.home,"图标边的文字",System.currentTimeMillis());  
  34.             notification.contentView = new RemoteViews(getPackageName(),R.layout.notification);   
  35.             //使用notification.xml文件作VIEW  
  36.             notification.contentView.setProgressBar(R.id.pb, 100,0false);  
  37.             //设置进度条,最大值 为100,当前值为0,最后一个参数为true时显示条纹  
  38.             //(就是在Android Market下载软件,点击下载但还没获取到目标大小时的状态)  
  39.             Intent notificationIntent = new Intent(this,main.class);   
  40.             PendingIntent contentIntent = PendingIntent.getActivity(this,0,notificationIntent,0);   
  41.             notification.contentIntent = contentIntent;          
  42.     }  
  43.     OnClickListener bt1lis=new OnClickListener(){  
  44.   
  45.                 @Override  
  46.                 public void onClick(View v) {  
  47.                         // TODO Auto-generated method stub  
  48.                         showNotification();//显示notification  
  49.                         handler.post(run);  
  50.                 }  
  51.   
  52.     };  
  53.     Runnable run=new Runnable(){  
  54.   
  55.                 @Override  
  56.                 public void run() {  
  57.                         // TODO Auto-generated method stub          
  58.                         count++;  
  59.                         notification.contentView.setProgressBar(R.id.pb, 100,count, false);  
  60.                         //设置当前值为count  
  61.                         showNotification();//这里是更新notification,就是更新进度条  
  62.                         if(count<100) handler.postDelayed(run, 200);  
  63.                         //200毫秒count加1  
  64.                 }  
  65.   
  66.     };  
  67.     OnClickListener bt2lis=new OnClickListener(){  
  68.   
  69.                 @Override  
  70.                 public void onClick(View v) {  
  71.                         nm.cancel(notification_id);  
  72.                         //清除notification  
  73.                 }  
  74.   
  75.     };  
  76.     public void showNotification(){  
  77.             nm.notify(notification_id, notification);             
  78.     }  
  79. }  


效果图:

 

 

分享到:
评论

相关推荐

    notification-Android带按钮自定义通知栏

    "notification-Android带按钮自定义通知栏"项目正是为了解决这个问题,它允许开发者创建具有定制行为的互动式通知。 首先,我们来了解一下Android中的通知系统。在API级别21及以上,Android引入了`...

    自定义通知栏notification,类似酷我音乐在后台运行时,带有按钮的通知栏

    在Android开发中,自定义通知栏Notification是一种常见且重要的功能,尤其对于音乐播放类应用,如酷我音乐,用户在后台使用时希望能在通知栏直接控制播放状态。本项目提供的就是一个实现了类似酷我音乐功能的自定义...

    Android自定义通知栏Notification

    在Android开发中,自定义通知栏Notification是一种提升用户体验的重要手段。Notification是系统级的消息提示,它可以在用户不直接与应用交互时提供信息,比如在状态栏显示消息、更新或者提醒。本项目“Android自定义...

    Android 使用Notification自定义通知栏显示

    Android 使用Notification自定义通知栏显示。自定义系统状态栏通知类NotificationExtend,也可以手动更新状态栏。依据此项目可以做成线程接受,或者广播接受自动更新。我博客网址: ...

    自定义通知栏和个推透传结合

    在移动应用开发中,自定义通知栏和个推透传是两个重要的概念,它们与提升用户体验和消息传递效率密切相关。本文将深入探讨这两个主题,并结合实际应用,展示如何将它们有效地结合起来。 首先,我们来理解自定义通知...

    Android 自定义通知栏 更新通知栏进度条

    在Android开发中,自定义通知栏是提升用户体验的重要手段,特别是在进行后台任务如下载、上传等操作时。本文将深入探讨如何实现一个自定义的通知栏,以动态更新进度条来模拟下载过程。虽然这里并不涉及实际的下载...

    Android自定义通知栏自适应所有API版本Demo

    关于Android 通知栏主要是基于Android 4.x、Android 5.x、Android 7.x为解决界限,例如,你可能解决Android 5.x以上版本标题字体颜色适配问题,却发现通知小图标竟然却是小白块等等。

    微信、淘宝、网易新闻、自定义等通知栏样式

    本文将深入探讨这些应用的通知栏设计策略,并基于`NotifyUtil-master`这一开源项目,讨论如何实现自定义通知栏样式。 1. **通知栏的基本功能**:通知栏主要功能是展示应用的非中断性信息,通常在用户不直接与应用...

    notification自定义通知栏,高仿UC浏览器360通知栏

    本项目“notification自定义通知栏,高仿UC浏览器360通知栏”旨在实现类似UC浏览器或360安全卫士的通知栏样式,提供更加美观和定制化的用户体验。 首先,我们要理解Android中的Notification工作原理。Notification...

    Android种使用Notification实现通知管理以及自定义通知栏实例(示例四)

    示例一:实现通知栏管理 当针对相同类型的事件多次发出通知,作为开发者,应该避免使用全新的通知,这时就应该考虑更新之前通知栏的一些值来达到提醒用户的目的。例如我们手机的短信系统,当不断有新消息传来时,...

    Android不使用自定义布局情况下实现自定义通知栏图标的方法

    在Android开发中,自定义通知栏图标通常是通过创建自定义布局来实现的,但有时我们可能需要在不使用自定义布局的情况下实现这一功能。本文将详细介绍如何在Android中不使用自定义布局创建自定义通知栏图标,这对于...

    5.0之后通知栏

    本文将详细讲解5.0之后的系统默认通知栏特性,自定义通知栏的实现,以及弹出悬浮自定义通知栏的方法。 ### 一、系统默认通知栏 Android 5.0引入了Material Design设计语言,通知栏也遵循这一设计风格,变得更为...

    通知栏(自定义、默认、带进度,开始,暂停)

    首先,我们来看自定义通知栏。开发者可以根据需求调整通知栏的显示内容和样式,包括文字、图标、颜色等元素。在Android中,可以使用`NotificationCompat.Builder`类来创建自定义通知,通过`setSmallIcon()`设置图标...

    Android快速集成极光推送,内含自定义通知,通知推送对象到某一个人,或者某一群人

    除了基本的通知功能,JPush还提供了丰富的自定义通知样式的能力,包括自定义通知栏图标、通知标题、内容、附加信息等。在服务器端API中,可以通过`display_type`字段选择通知的展示方式,并通过`extras`字段传递...

    自定义布局通知栏

    在Android开发中,自定义布局通知栏是一种常见且重要的功能,它允许开发者为用户提供更加个性化和交互式的体验。本文将详细讲解如何实现自定义布局的通知栏,并通过点击通知栏按钮来跳转到特定的Activity。 首先,...

    android展开通知栏demo(兼容4.2及以上版本)

    在Android开发中,有时我们需要对系统的某些功能进行自定义或者扩展,例如控制通知栏的显示。这个"android展开通知栏demo(兼容4.2及...如果你想要自定义通知栏的行为或者对系统功能进行扩展,这是一个很好的学习实例。

    Android通知栏版本兼容解决方案.docx

    然而,由于Android系统的碎片化特性,不同版本间的差异可能导致自定义通知栏出现兼容性问题,尤其是在视觉表现方面,例如文本颜色与系统通知栏背景不协调等现象。本文将详细介绍如何解决这些兼容性问题,确保自定义...

    版本更新,自定义进度条

    自定义通知栏布局可以包括改变通知图标、文本样式、颜色、甚至是添加额外的交互元素,如按钮或自定义视图。在代码实现中,通常会通过`NotificationCompat.Builder`类或者在Android O及以上版本使用`...

Global site tag (gtag.js) - Google Analytics