自定义通知Notification:自己定义通知Notification下拉后的显示样式

注意:以下有些方法需要在build.gradle里修改minSdkVersion 21才能使用

只需在构建普通Notification的构建器builder上添加对bigContentView属性设置为RemoteView(自定义的通知样式),如需要对通知展开视图RemoteView里的UI控件设置监听,需要通过设置广播和RemoteView的setOnClickPendingIntent()方法配合使用

Notification notification;
NotificationManager manager;
static Receive receive;
//发送自定义视图的通知
public void sendNotification(){
Notification.Builder builder=new Notification.Builder(this);
builder.setSmallIcon(R.drawable.ic_launcher_background); //设置小图标(未展开上方显示图标)
builder.setTicker("QlynMusic又出新歌了,快来收听吧"); //显示最先在顶部收到的通知
builder.setWhen(System.currentTimeMillis()); //发送时间
builder.setAutoCancel(false);//点击通知后是否取消通知
builder.setWhen(System.currentTimeMillis());//设置通知的时间
//setVisibility用来设置通知在什么情况下会显示
/*
Notification.VISIBILITY_PUBLIC:任何情况都会显示通知。
Notification.VISIBILITY_PRIVATE:只有在没有锁屏时会显示通知。
Notification.VISIBILITY_SECRET:在pin、password等安全锁和没有锁屏的情况下才能够显示通知。
*/
builder.setVisibility( Notification.VISIBILITY_PUBLIC );

//设置通知响应的事件Activity,PendingIntent可以理解为延迟的Intent
Intent intent =new Intent (this,MainActivity.class);
PendingIntent pendingIntent =PendingIntent.getActivity(this, 0, intent,0);
builder.setContentIntent(pendingIntent);

//设置通知振动:下标为偶数表示静止时长,奇数为振动时长,单位为毫秒
//需在注册地方声明权限:
//<uses-permission android:name="android.permission.VIBRATE" />
long[] vibrates= {0,1000,1000,1000};//此时立即振动,然后静止一秒,再振动一次
builder.setVibrate(vibrates);

//构建一条通知Notification
notification=builder.build();
//获得自定义视图
remoteViews=new RemoteViews( getPackageName(),R.layout.information );
//设置remote里的显示图片
remoteViews.setImageViewResource( R.id.nAlbum, android.R.drawable.btn_star_big_on);
remoteViews.setImageViewResource( R.id.nAppIcon, R.mipmap.ic_launcher);
remoteViews.setImageViewResource( R.id.nLastSong, android.R.drawable.ic_media_previous);
if(mediaPlayer.isPlaying()){
remoteViews.setImageViewResource( R.id.nPlay, R.drawable.pause);
}else{
remoteViews.setImageViewResource( R.id.nPlay, R.drawable.play);
}
remoteViews.setImageViewResource( R.id.nNextSong, android.R.drawable.ic_media_ff);

//设置RemoteViews里的控件监听,与广播接收器配合使用。
intent = new Intent("play");//设置intent的Action(http://www.amjmh.com/v/)
PendingIntent pIntentPause = PendingIntent.getBroadcast(this, 0,
intent, 0);
remoteViews.setOnClickPendingIntent(R.id.nPlay, pIntentPause);
intent = new Intent("lastSong");//设置intent的Action
pIntentPause = PendingIntent.getBroadcast(this, 0,
intent, 0);
remoteViews.setOnClickPendingIntent(R.id.nLastSong, pIntentPause);
intent = new Intent("nastSong");//设置intent的Action
pIntentPause = PendingIntent.getBroadcast(this, 0,
intent, 0);
remoteViews.setOnClickPendingIntent(R.id.nNextSong, pIntentPause);

//将自定义视图传入通知的展开视图
notification.bigContentView=remoteViews;
//发送通知
manager = (NotificationManager) getSystemService( NOTIFICATION_SERVICE );
manager.notify( 1,notification );
}
————————————————

原文地址:https://www.cnblogs.com/hyhy904/p/11414312.html

时间: 2024-11-05 11:41:55

自定义通知Notification:自己定义通知Notification下拉后的显示样式的相关文章

代码: 两列图片瀑布流(一次后台取数据,图片懒加载。下拉后分批显示图片。图片高度未知,当图片onload后才显示容器)

代码: 两列图片瀑布流(一次后台取数据,无ajax,图片懒加载.下拉后分批显示图片.图片高度未知,当图片onload后才显示容器) [思路]: 图片瀑布流,网上代码有多种实现方式,也有各类插件.没找到合意的,所以根据网上找的一段代码,进行了较大改动. 需引用 zepto 或 jquery. 我这个是应用于手机上的,两列瀑布流,图片高度未知——等图片的onloaded事件触发后,才对容器进行计算和定位. 大容器是 $("#imgList"),容器格子是$(".pin"

Android UI--自定义ListView(实现下拉刷新+加载更多)

http://blog.csdn.net/wwj_748/article/details/12512885 Android UI--自定义ListView(实现下拉刷新+加载更多) 关于实现ListView下拉刷新和加载更多的实现,我想网上一搜就一堆.不过我就没发现比较实用的,要不就是实现起来太复杂,要不就是不健全的.因为小巫近期要开发新浪微博客户端,需要实现ListView的下拉刷新,所以就想把这个UI整合到项目当中去,这里只是一个demo,可以根据项目的需要进行修改. 就不要太在乎界面了哈:

低版本系统兼容的ActionBar(三)自定义Item视图+进度条的实现+下拉导航+透明ActionBar

       一.自定义MenuItem的视图 custom_view.xml (就是一个单选按钮) <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android

CSS自定义select下拉选择框的样式(不用其他标签模拟)

CSS自定义select下拉选择框的样式(不用其他标签模拟):http://www.jb51.net/css/148841.html CSS美化选择框:http://www.cnblogs.com/shishm/archive/2012/03/02/2376759.html 1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta charset="UTF-8"> 5

python: HTML之 鼠标放上去下拉项字体显示不同颜色

鼠标放上去下拉项字体显示不同颜色 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Title</title> <style> .menu:hover { color: red; display: b

1.鼠标点击换样式+2.下拉菜单缓慢显示/隐藏样式效果

1.鼠标点击换样式 <style type="text/css"> .aa{ width:90px; height:60px;text-align:center; vertical-align:middle; line-height:60px; margin-right:10px; font-size:19px; float:left; background-color:#06F} </style> <body> <div style=&quo

jsp下拉框中显示数据库信息&&jsp 下拉框从数据库中如何取值?

jsp下拉框中显示数据库信息 <select> <option value=0>-- 请选择 --</option> <% dao d=new dao();// 这是那个数据库访问的类. List list=d.getData(); for(int i=0;i<list.size();i++) { %> <option value=<%=i+1%>><%=list.get(i)%></option> &l

easyui combobox下拉框中显示大于号小于号的问题

前两天同事做了个功能,通过勾选下拉框里的值进行列表查询,结果下拉框里的值是“0<t<=2”.“2<t<=5”.“t>5”这样的. combobox是用脚本渲染出来的,里面的data的格式就如这样: [{ID:"01",TEXT:"0<t<=2"},{ID:"02",TEXT:"2<t<=5"},{ID:"03",TEXT:"t>5&quo

Android实现RecyclerView自定义列表、点击事件以及下拉刷新

Android使用RecyclerView 1. 什么是RecyclerView RecyclerView 是 Android-support-v7-21 版本中新增的一个 Widgets,官方对于它的介绍则是:RecyclerView 是 ListView 的升级版本,更加先进和灵活. 简单来说就是:RecyclerView是一种新的视图组,目标是为任何基于适配器的视图提供相似的渲染方式.它被作为ListView和GridView控件的继承者,在最新的support-V7版本中提供支持. 2.