安卓 自定义Notification

来源:互联网 发布:js cron验证函数 编辑:程序博客网 时间:2024/05/19 20:38

本文是关于如何创建一个自定义界面的Notification,如图:

这里写图片描述

其实这是一个包含BigContentView样式的通知;这种通知比普通通知多出了一个自定义的BigContentView;
弹出通知时,双指下拉通知即可展示出设置的BigContentView.

直接代码解释:

@TargetApi(Build.VERSION_CODES.JELLY_BEAN)    public static void createNotification(Context context) {        //1.创建RemoteViews        mRemoteViews = new RemoteViews(context.getPackageName(), R.layout.app_widget_no_config);            //mRemoteViews.addView(R.id.ll_parent,remoteView3);        //2.构建一个打开Activity的PendingIntent        Intent intent=new Intent(context,MainActivity.class);        PendingIntent mPendingIntent=PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);        //3.创建一个Notification        //兼容类:NotificationCompat:Helper for accessing features in Notification introduced after API level 4 in a backwards compatible fashion.        mNotification = new NotificationCompat.Builder(context)                //使用自定义布局的通知在EMUI 上 ticker和smallIcon能显示正常,MIUI则不行(MIUI重要通知以Heads-up形式来展示的)                .setSmallIcon(R.mipmap.desk1)                .setTicker("ticker")                .setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.mipmap.ic_launcher))                .setContentTitle("contentTitle")                .setContentText("contentText")                .setAutoCancel(false) //通知点击之后是自动取消                //设置通知的大号布局;所谓大号布局是 对通知双指下拉所展示的布局                //api 16 添加的;给通知设置自定义的布局                //等同于 mNotification.bigContentView = mRemoteViews;                .setCustomBigContentView(mRemoteViews)                //使用自定义的通知布局那么Style不起作用                //.setStyle(new NotificationCompat.BigPictureStyle())                .setUsesChronometer(true) //通知右侧会显示一个计时器,显示通知的弹出计时                .setContentIntent(mPendingIntent)                .setOnlyAlertOnce(true)  //设置相同通知的声音 震动,ticker 只显示一次                .setOngoing(true)  //设置通知不会被 通知栏的 "X"清除通知按钮导致消失掉;并且是显示在别的通知之上; 华为手机左侧会标志通知:运行中                .build();        // mNotification.contentView = mRemoteViews;         // 不能添加这一句话!        mNotification.priority = Notification.PRIORITY_MAX;  //优先级:直接在通知栏的最上方显示出来       //4.获取NotificationManager,生成通知        manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);        manager.notify(123, mNotification);    }
原创粉丝点击