android Notification的自定义和实现通知栏的展开和收起
2016-08-01 09:22
239 查看
最近写项目遇到了这样一个问题,就是如何才能实现通知栏的伸展,效果直接上图
通知栏伸展后是
其实实现这个效果还是比较简单的,但是查找了很多资料,大家都是说的马马虎虎,一样的模板,照抄照搬。
先来说一下如何实现Notification的自定义吧,这里需要设置的是Notification的ContentView,代码如下
这样就实现了自定义notification布局了。
现在讲一下如何设置notification伸展的布局,想上面一下
也很简单,只需要把RemoteView交付给bigContentView就可以了。
因为Notification的bigContentView只有在SDK16以上才可以使用,所以这里应该做一个判断。
还有一点找那个要的是,在设置bigContentView和ContentView时,一定要先设置前再设置后者,不然会导致notification布局不显示。
现在上一下全部代码:
MainActivity:
看吧,其实就是这么简单。
示例下载:链接:http://pan.baidu.com/s/1c1Mw28C 密码:pp7j
通知栏伸展后是
其实实现这个效果还是比较简单的,但是查找了很多资料,大家都是说的马马虎虎,一样的模板,照抄照搬。
先来说一下如何实现Notification的自定义吧,这里需要设置的是Notification的ContentView,代码如下
remoteViews = new RemoteViews(getPackageName(), R.layout.statusbar);
builder = new NotificationCompat.Builder(getApplicationContext());
builder.setSmallIcon(R.drawable.ic_launcher) .setOngoing(true) .setTicker("music is playing"); notification=builder.build();
notification.contentView=remoteViews;
mNotificationManager.notify(1,notification);
这样就实现了自定义notification布局了。
现在讲一下如何设置notification伸展的布局,想上面一下
也很简单,只需要把RemoteView交付给bigContentView就可以了。
remoteViews_large=new RemoteViews(getPackageName(),R.layout.statusbar_1);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { notification.bigContentView=remoteViews_large; }
因为Notification的bigContentView只有在SDK16以上才可以使用,所以这里应该做一个判断。
还有一点找那个要的是,在设置bigContentView和ContentView时,一定要先设置前再设置后者,不然会导致notification布局不显示。
现在上一下全部代码:
MainActivity:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button btn_start,btn_cancel;
private NotificationCompat.Builder builder;
private NotificationManager mNotificationManager;
private RemoteViews remoteViews,remoteViews_large;
private Notification notification;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
btn_start= (Button) findViewById(R.id.btn_start);
btn_cancel= (Button) findViewById(R.id.btn_cancel);
btn_start.setOnClickListener(this);
btn_cancel.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btn_start:
mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
remoteViews = new RemoteViews(getPackageName(), R.layout.statusbar);remoteViews_large=new RemoteViews(getPackageName(),R.layout.statusbar_1);
builder = new NotificationCompat.Builder(getApplicationContext());
builder.setSmallIcon(R.drawable.ic_launcher)
.setOngoing(true)
.setTicker("music is playing");
notification=builder.build();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { notification.bigContentView=remoteViews_large; }
notification.contentView=remoteViews;mNotificationManager.notify(1,notification);
break;
case R.id.btn_cancel:
mNotificationManager.cancel(1);
break;
}
}
}
看吧,其实就是这么简单。
示例下载:链接:http://pan.baidu.com/s/1c1Mw28C 密码:pp7j
相关文章推荐
- Android 自定义Notification消息通知样式并实现与Activity简单交互
- Android自定义View——从零开始实现可展开收起的水平菜单栏
- Android种使用Notification实现通知管理以及自定义通知栏实例(示例四)
- Android通知栏实现APP下载更新(DownloadManager和自定义Notification2种方式实现)
- Android种使用Notification实现通知管理以及自定义通知栏(Notification示例四)
- Android中SpannableString学习以及实现自定义TextView的显示更多(展开)和收起功能
- Android通知栏实现APP下载更新(DownloadManager和自定义Notification2种方式实现)
- Android种使用Notification实现通知管理以及自定义通知栏(Notification示例四)
- Android入门(43)——第五章 使用Notification实现状态通知栏的通知
- Notification通知实现自定义和带进度条
- Android中通知栏Notification详解以及自定义Notification
- Android-Notification (通知实现)
- android的几种“通知”方式简单实现(Notification&NotificationManager)
- Android 自定义通知栏实现资料总结
- Android自定义通知布局Notification,点击Notification导航切换回原Activity
- Android不使用自定义布局情况下实现自定义通知栏图标的方法
- Android通知之自定义通知、响应通知上自定义按钮和更新通知的实现
- Android自定义通知布局Notification,点击Notification导航切换回原Activity
- Android中通过Notification&NotificationManager实现消息通知
- Android 自定义View修炼-自定义可动画展开收缩View的实现