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());