Android基础------通知栏
前言:Android通知栏提示笔记
通知几乎是每一款app都拥有的功能
1.发送通知
发送一个通知栏必须用到两个类: NotificationManager 、 Notification。
NotificationManager : 是状态栏通知的管理类,负责发通知、清楚通知等。
NotificationManager 是一个系统Service,必须通过 getSystemService()方法来获取。
视图文件, xml:
<Button android:text="发送通知" android:onClick="test_2" android:layout_width="match_parent" android:layout_height="wrap_content" />
<Button android:text="下载通知" android:onClick="test_3" android:layout_width="match_parent" android:layout_height="wrap_content" />
方法:
//===========================发通知==============================// //定义一个NotifactionManager对象 private NotificationManager manager; //设置日期格式 private SimpleDateFormat sdf=new SimpleDateFormat("HH:mm:ss"); public void test_2(View view){ //获取NotifactionManager对象 manager=(NotificationManager)getSystemService(NOTIFICATION_SERVICE); //构建一个Notifaction的Builder对象 Notification.Builder builder=new Notification.Builder(this); //设置通知相关信息 builder.setTicker("你有一条新的通知");//设置信息提示 builder.setSmallIcon(R.mipmap.ic_launcher);//设置通知提示图标 builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.user2));//设置图标 builder.setContentTitle("部门通知");//设置标题 builder.setContentText("今天中午一点在报告厅一开部门会议,"+sdf.format(new Date()));//设置文本 builder.setAutoCancel(true);//查看后自动取消 builder.setWhen(SystemClock.currentThreadTimeMillis());//什么时候发出的通知 builder.setDefaults(Notification.DEFAULT_LIGHTS);//消息提示模式 //设置震动规律,(第一个参数: 振动前等待的时间,第二个参数: 第一次振动的时长、以此类推 ) builder.setVibrate(new long[]{1000,2000,1000,3000}); //builder.setSound(); //设置声音 //自定义声音 //builder.setSound(Uri.parse("file:///sdcard/notification/ringer.mp3")); //设置灯 builder.setLights(Color.GREEN,1000,1000); //设置点击通知后执行的动作 Intent intent=new Intent(this,NewFileActivity.class); intent.putExtra("message","今天中午一点在报告厅一开部门会议,请大家准参加,通知发布时间:"+sdf.format(new Date())); //用当前时间充当通知的id,这里是为了区分不同的通知,如果是同一个id,前者就会被后者覆盖 int requestId=(int) new Date().getTime(); //第一个参数连接上下文的context // 第二个参数是对PendingIntent的描述,请求值不同Intent就不同 // 第三个参数是一个Intent对象,包含跳转目标 // 第四个参数有4种状态 PendingIntent pendingIntent=PendingIntent.getActivity(this,requestId,intent,PendingIntent.FLAG_UPDATE_CURRENT); builder.setContentIntent(pendingIntent); //发出通知,参数是(通知栏的id,设置内容的对象) manager.notify(requestId,builder.build()); }
图解:
对 NotificationManager 、 Notification更详细的内容
2.下载通知
demo:
//发送一个下载通知 Notification.Builder builder; public void test_3(View view){ manager=(NotificationManager)getSystemService(NOTIFICATION_SERVICE); builder=new Notification.Builder(this); builder.setTicker("文件开始下载"); builder.setSmallIcon(R.mipmap.ic_launcher); builder.setContentTitle("文件下载"); builder.setContentText("文件正在下载中......"); builder.setWhen(SystemClock.currentThreadTimeMillis()); builder.setDefaults(Notification.DEFAULT_LIGHTS);//消息提示模式 builder.setProgress(100,0,false); //模拟正在执行下载 new Thread(new Runnable() { @Override public void run() { for (int i=1;i<=100;i++){ builder.setProgress(100, i, false); if(i==100) builder.setContentText("文件下载完毕!"); manager.notify(1, builder.build()); SystemClock.sleep(100);//模拟下载 } manager.cancel(1); } }).start(); }
------------------------------------------------