notification基本使用
1.什么是notification?
notification就是通知,展示在屏幕的顶端,首先会表示一个图标的形式,当用户向下滑动时候,展示出通知具体内容。
注意:Android3.0之后,notification的变化比较大。如果要考虑兼容3.0以下的手机版本,需要使用V4或者V7包下Notification。
2。notification使用
一.基本使用。使用V4或者V7下的NotificationCompat做到向下兼容
【注意】
在5.0之后的系统中,官方推荐将通知的图标设置为透明的图标
二、大文本通知
BigTextStyle
【注意】
大文本通知只有处于通知栏顶部时,才会显示大文本。否则就是一个普通的通知
三、大图通知
BigPictureStyle
【注意】
大图通知只有处于通知栏顶部时,才会显示图片。否则就是一个普通的通知
四、进度条通知
setProgress
notificationManager.notify方法可以在子线程中执行
五、自定义通知
3,notification基本使用代码如下
1.获取notificationmanager对象(getSystemService获取系统服务)
2.创建一个notification对象(创建通知的构建者对象)
3.发送通知的提交。
private NotificationManager mNotificationManager;
//1、获取NotificationManager对象
//getSystemService获取系统服务
mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
//2、创建一个Notification对象
//创建通知的构建者对象
NotificationCompat.Builder builder =
new NotificationCompat.Builder(this);
//设置图标:如果没有设置图标,则通知不会出现
builder.setSmallIcon(R.drawable.ic_tab_category_normal);
//设置是否显示时间
builder.setShowWhen(true);
//设置标题
builder.setContentTitle("通知的标题");
//设置内容
builder.setContentText("这是通知的内容");
//设置通知的个数
builder.setNumber(counter++);
Notification notification = builder.build();
//3、发送(提交)通知
//参数1:通知的ID,标识.
//参数2:Notification对象
//注意:如果发送多个通知,但是通知的ID一样,则不会显示多条通知;
// 如果需要显示多条通知,则需要修改ID为不一样
mNotificationManager.notify(counter,notification);
//大文本显示mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
builder.setContentTitle("标题");
builder.setContentText("这是内容简介");
builder.setSmallIcon(R.drawable.ic_night_on);
//显示大文本
NotificationCompat.BigTextStyle bigTextStyle =
new android.support.v4.app.NotificationCompat.BigTextStyle(builder);
bigTextStyle.setSummaryText("xxxx");
bigTextStyle.bigText("ddddd");
mNotificationManager.notify(id++,bigTextStyle.build());
**
* 进度条通知
*/
public class MainActivity extends AppCompatActivity {
private NotificationManager notificationManager;
private int progress ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
}
public void click(View view) {
//创建通知
final NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
builder.setSmallIcon(R.mipmap.ic_launcher);
builder.setContentText("简介");
builder.setContentTitle("标题");
//设置进度
//参数1:总进度
//参数2:当前进度
//参数3:布尔类型,true表示总进度不确定,false表示总进度确定(即参数1有效)
builder.setProgress(100,progress,false);
new Thread(new Runnable() {
@Override
public void run() {
while (progress < 100) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Log.d("androidxx", "run: " + progress);
// progress++;
builder.setContentText(progress + "%" );
builder.setProgress(100,progress++,false);
notificationManager.notify(1,builder.build());
}
}
}).start();
}
//大图
//android.os.Build.VERSION.SDK_INT表示当前手机系统版本号
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) {
Notification.Builder builder = new Notification.Builder(this);
builder.setSmallIcon(R.mipmap.ic_launcher);
builder.setContentTitle("标题");
builder.setContentText("简介");
Notification.BigPictureStyle bigPictureStyle = new Notification.BigPictureStyle(builder);
//将图片资源文件转换成Bitmap对象
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.a3);
bigPictureStyle.bigPicture(bitmap);
bigPictureStyle.setBigContentTitle("XXXXXX");
bigPictureStyle.setSummaryText("sssssssssssss");
mNotificationManager.notify(1,bigPictureStyle.build());
} else {
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
builder.setSmallIcon(R.mipmap.ic_launcher);
builder.setContentTitle("标题");
builder.setContentText("简介");
NotificationCompat.BigPictureStyle bigPictureStyle = new NotificationCompat.BigPictureStyle(builder);
//将图片资源文件转换成Bitmap对象
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.a3);
bigPictureStyle.bigPicture(bitmap);
mNotificationManager.notify(2,bigPictureStyle.build());
}
/**
* 参数1:上下文对象
* 参数2:请求码,可以是任意的整数
* 参数3:intent对象
* 参数4:PendingIntent的类型
* FLAG_ONE_SHOT表示PendingIntent只能执行一次
* FLAG_CANCEL_CURRENT表示会删除已存在的事件,用新的事件替代
*/
PendingIntent pendingIntent = PendingIntent.getActivity(this,1,intent,PendingIntent.FLAG_CANCEL_CURRENT);
builder.setContentIntent(pendingIntent);
notificationManager.notify(1,builder.build());