Notification的使用(自定义Notification布局)
来源:互联网 发布:unity3d fbx 编辑:程序博客网 时间:2024/05/23 20:46
1、notification的基本的使用
private void sendNotification() { //获取NotificationManager实例 NotificationManager notifyManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); //实例化NotificationCompat.Builde并设置相关属性 NotificationCompat.Builder builder = new NotificationCompat.Builder(this); //设置小图标 builder.setSmallIcon(R.mipmap.ic_launcher); //设置通知标题 builder.setContentTitle("标题"); //设置通知内容 builder.setContentText("这是内容"); Notification notification = builder.build(); // 设置常驻 Flag //notification.flags = Notification.FLAG_ONGOING_EVENT; notifyManager.notify(1, notification); }
给notification设置flag为Notification.FLAG_ONGOING_EVENT,则这个notification会变成常驻型的notification.
效果图如下:
2、自定义notification的布局
1、点击notification跳转到activity
notification_1.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:id="@+id/linear_1"> <Button android:id="@+id/btn_1" android:layout_width="0dp" android:layout_weight="1" android:layout_height="44dp" android:text="btn_1"/> <Button android:id="@+id/btn_2" android:layout_width="0dp" android:layout_weight="1" android:layout_height="44dp" android:text="btn_2"/> <Button android:id="@+id/btn_3" android:layout_width="0dp" android:layout_weight="1" android:layout_height="44dp" android:text="btn_3"/></LinearLayout>
携带不同的数据跳转到SecondActivity
private void sendNotification() { //使用RemoteViews来定义通知栏的界面 RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.notification_1); //设置字体颜色 contentView.setTextColor(R.id.btn_1,getResources().getColor(R.color.colorAccent)); Intent notificationIntent = new Intent(this,SecondActivity.class); //携带的数据 notificationIntent.putExtra("flags", "btn_1"); PendingIntent contentIntent = PendingIntent.getActivity(this, 1, notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT); //当点击id为btn_1的控件时,跳转到SecondActivity contentView.setOnClickPendingIntent(R.id.btn_1, contentIntent); //携带的数据 notificationIntent.putExtra("flags", "btn_2"); contentIntent = PendingIntent.getActivity(this, 2, notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT); //当点击id为btn_1的控件时,跳转到SecondActivity contentView.setOnClickPendingIntent(R.id.btn_2, contentIntent); //携带的数据 notificationIntent.putExtra("flags", "btn_3"); contentIntent = PendingIntent.getActivity(this, 3, notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT); //当点击id为btn_1的控件时,跳转到SecondActivity contentView.setOnClickPendingIntent(R.id.btn_3, contentIntent); NotificationCompat.Builder builder = new NotificationCompat.Builder(this); builder.setSmallIcon(R.mipmap.ic_launcher); builder.setContent(contentView); NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); Notification no = builder.build(); no.flags = Notification.FLAG_ONGOING_EVENT; // 设置常驻 Flag nm.notify(233, no); }
2、点击notification来发送广播
private void sendNotification() { //使用RemoteViews来定义通知栏的界面 RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.notification_1); //设置字体颜色 contentView.setTextColor(R.id.btn_1,getResources().getColor(R.color.colorAccent)); Intent notificationIntent = new Intent(); //设置action notificationIntent.setAction("com.xq.broadcast"); //携带的数据 notificationIntent.putExtra("flags", "btn_1"); PendingIntent contentIntent = PendingIntent.getBroadcast(this, 1, notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT); contentView.setOnClickPendingIntent(R.id.btn_1, contentIntent); //携带的数据 notificationIntent.putExtra("flags", "btn_2"); contentIntent = PendingIntent.getBroadcast(this, 2, notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT); contentView.setOnClickPendingIntent(R.id.btn_2, contentIntent); //携带的数据 notificationIntent.putExtra("flags", "btn_3"); contentIntent = PendingIntent.getBroadcast(this, 3, notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT); contentView.setOnClickPendingIntent(R.id.btn_3, contentIntent); NotificationCompat.Builder builder = new NotificationCompat.Builder(this); builder.setSmallIcon(R.mipmap.ic_launcher); builder.setContent(contentView); NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); Notification no = builder.build(); no.flags = Notification.FLAG_ONGOING_EVENT; // 设置常驻 Flag nm.notify(233, no); }
定义一个广播接收器
public class NotificaionBroadcastReceiver extends BroadcastReceiver { private RemoteViews contentView; private NotificationCompat.Builder builder; private NotificationManager nm; @Override public void onReceive(Context context, Intent intent) { contentView = new RemoteViews(context.getPackageName(), R.layout.notification_1); builder = new NotificationCompat.Builder(context); builder.setSmallIcon(R.mipmap.ic_launcher); builder.setContent(contentView); nm = (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE); if (intent != null) { String s = intent.getStringExtra("flags"); Log.v("xq_msg", "s: " + s); //收到广播后改变字体颜色 contentView.setTextColor(R.id.btn_2, context.getResources().getColor(R.color.colorAccent)); nm.notify(233, builder.build()); } }}
在android的manifest中声明广播
<receiver android:name=".NotificaionBroadcastReceiver"> <intent-filter> <action android:name="com.xq.broadcast" /> </intent-filter> </receiver>
3、点击notification来发送启动服务
private void sendNotification() { //使用RemoteViews来定义通知栏的界面 RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.notification_1); //设置字体颜色 contentView.setTextColor(R.id.btn_1,getResources().getColor(R.color.colorAccent)); Intent notificationIntent = new Intent(this,NotificationService.class); //设置action notificationIntent.setAction("com.xq.broadcast"); //携带的数据 notificationIntent.putExtra("flags", "btn_1"); PendingIntent contentIntent = PendingIntent.getService(this, 1, notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT); contentView.setOnClickPendingIntent(R.id.btn_1, contentIntent); //携带的数据 notificationIntent.putExtra("flags", "btn_2"); contentIntent = PendingIntent.getService(this, 2, notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT); contentView.setOnClickPendingIntent(R.id.btn_2, contentIntent); //携带的数据 notificationIntent.putExtra("flags", "btn_3"); contentIntent = PendingIntent.getService(this, 3, notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT); contentView.setOnClickPendingIntent(R.id.btn_3, contentIntent); NotificationCompat.Builder builder = new NotificationCompat.Builder(this); builder.setSmallIcon(R.mipmap.ic_launcher); builder.setContent(contentView); NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); Notification no = builder.build(); no.flags = Notification.FLAG_ONGOING_EVENT; // 设置常驻 Flag nm.notify(233, no); }
定义一个服务
public class NotificationService extends Service { private RemoteViews contentView; private NotificationCompat.Builder builder; private NotificationManager nm; @Nullable @Override public IBinder onBind(Intent intent) { return null; } @Override public void onCreate() { super.onCreate(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { contentView = new RemoteViews(getPackageName(), R.layout.notification_1); builder = new NotificationCompat.Builder(this); builder.setSmallIcon(R.mipmap.ic_launcher); builder.setContent(contentView); nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); if (intent != null) { String s = intent.getStringExtra("flags"); Log.v("xq_msg", "s: " + s); //改变字体颜色 contentView.setTextColor(R.id.btn_2, getResources().getColor(R.color.colorAccent)); nm.notify(233, builder.build()); } return super.onStartCommand(intent, flags, startId); }}
在android的manifest中声明服务
<service android:name=".NotificationService" />
阅读全文
0 0
- Notification的使用(自定义Notification布局)
- 自定义的Notification布局
- 自定义的Notification布局
- Notification使用(默认和自定义布局)
- 使用自定义的 Notification
- 实现自定义布局的Notification
- Android学习笔记--Notification的使用-- 自定义布局
- Android自定义Notification布局
- 自定义状态栏notification布局
- 使用自定义Notification布局出现异常
- 自定义Notification,Notificaton的使用,
- android notification自定义布局的应用
- 通知栏发送消息Notification(可以使用自定义的布局)
- Android 通知栏发送消息Notification(可以使用自定义的布局)
- 顶部通知 Notification的使用,及自定义Notification
- 自定义 Notification中 布局界面
- Android Notification自定义布局实现
- Android-paddingIntent.Notification.自定义布局
- 欢迎使用CSDN-markdown编辑器
- 711
- 将h.264视频流封装成flv格式文件(一.flv格式)
- go println与printf区别
- 第二章 算法 (数据结构笔记)
- Notification的使用(自定义Notification布局)
- Linux下tomcat的安装与配置
- 一些关于命令的网址
- jzoj. 1279. 解题 (bzoj. 1700)
- EditText点击事件:弹出单选框
- python3作业
- 文章标题23423
- PostgreSql新手入门命令
- get和post编码方式