Android中的通知栏

来源:互联网 发布:陕西广电网络官网 编辑:程序博客网 时间:2024/06/05 23:46

一、状态栏通知的要素
Android 6.0
这里写图片描述

二、发送一个简单的通知

public void simpleNotification(Context context) {    NotificationCompat.Builder builder = new NotificationCompat.Builder(context);        builder.setContentTitle("最简通知")                .setContentText("这是通知内容")    //smallicon 规范 target to Api 20+ 白色透明                   .setSmallIcon(R.drawable.ic_status_bar_kitkat)        notify(context, NOTIFY_ID_SIMPLE, builder.build());    }
//tag,通知ID的前缀,通常用于区分不同的模块//id,通知ID,与tag一起唯一标识通知    public void notify(String tag, int id, Notification notification)

三、更多配置项
1、大图标
2、时间
3、提醒:震动,提醒,呼吸灯。

 NotificationCompat.Builder builder = new NotificationCompat.Builder(context);        builder.setContentTitle("老王请求加好友")                .setContentText("我是隔壁老王")                .setSmallIcon(R.drawable.ic_status_bar_lollipop)                .setLargeIcon(largeIcon)//设置大图标                .setDefaults(NotificationCompat.DEFAULT_ALL)//设置系统默认提醒                .setSound(Uri.parse("android:resource://" + context.getPackageName() + "/" + R.raw.msg))//设置声音                .setVibrate(new long[] {0, 500, 500, 500})//设置振动                .setLights(Color.BLUE, 200, 100)//设置呼吸灯

四、点击响应
响应Activity

  Intent intent = new Intent(context, CalleeActivity.class); PendingIntent pending= PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);        intent.putExtra(CalleeActivity.EXTRA_FROM, from);        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  .setContentIntent(pending);

注:PendingIntent中的intent,不能使用intent.putExtra来区别,应该使用intent.setAction来区分不同的PendingIntent。

五、清除通知
Auto cancel

  NotificationCompat.Builder.setAutoCancel(true)

Cancel

    /**     * 取消状态栏通知。     * @param context     * @param id     */    public void cancel(Context context, int id) {        NotificationManagerCompat notifyMg = NotificationManagerCompat.from(context);        notifyMg.cancel(id);    }

六、保持提醒不被移除

NotificationCompat.Builder.setOngoing(true)

七、添加进度条

    /**     * 带进度条的状态栏通知。根据setProgress控制是否带有确切进度     * @param context     */    public void progressNotification(Context context) {        NotificationCompat.Builder builder = new NotificationCompat.Builder(context);        builder.setContentTitle("文件名")                .setContentText("文件下载url")                .setSmallIcon(R.drawable.ic_status_bar_lollipop)                .setProgress(100, 30, false)                .setContentIntent(calleeActivityIntent(context, CalleeActivity.From.PROGRESS));        notify(context, NOTIFY_ID_PROGRESS, builder.build());    }

八、添加按钮

                .addAction(R.drawable.accept, "接受", calleeServiceIntent(context, CalleeService.ACTION_ACCEPT, "接受"))                .addAction(R.drawable.decline, "踢开他", calleeServiceIntent(context, CalleeService.ACTION_DECLINE, "拒绝"))

九、锁屏显示控制(默认显示)

NotificationCompat.Builder.setVisibility().setPublicVersion()

十、浮动通知

NotificationCompat.Builder.setPriority(NotificationCompat.PRIORITY_HIGH)//设置浮动通知

十一、长文本类型提醒

    public void bigTextNotification(Context context) {        android.support.v4.app.NotificationCompat.BigTextStyle style = new android.support.v4.app.NotificationCompat.BigTextStyle();        style.bigText("你好,我是隔壁老王。你好,我是隔壁老王。你好,我是隔壁老王。你好,我是隔壁老王。你好,我是隔壁老王。你好,我是隔壁老王。你好,我是隔壁老王。");        style.setSummaryText("OldKing@NextDoor");        NotificationCompat.Builder builder = new NotificationCompat.Builder(context);        builder.setContentTitle("老王请求加好友")                .setContentText("我是隔壁老王")                .setSmallIcon(R.drawable.ic_status_bar_lollipop)                .setLargeIcon(largeIcon)                .setStyle(style);        notify(context, NOTIFY_ID_BIG_TEXT, builder.build());    }

十二、媒体播放器

    public void mediaNotification(Context context) {        NotificationCompat.MediaStyle mediaStyle = new NotificationCompat.MediaStyle();        //收起时显示的按钮                mediaStyle.setShowActionsInCompactView(0, 1);        NotificationCompat.Builder builder = new NotificationCompat.Builder(context);        builder.setContentTitle("歌曲名")                .setContentText("歌手名,专辑名")                .setSmallIcon(R.drawable.ic_status_bar_lollipop)                .setLargeIcon(largeIcon)                .setStyle(mediaStyle)                .addAction(R.drawable.ic_pause, "暂停", calleeServiceIntent(context, CalleeService.ACTION_PAUSE, "暂停"))        .addAction(R.drawable.ic_play, "播放", calleeServiceIntent(context, CalleeService.ACTION_START, "播放"));        notify(context, NOTIFY_ID_BIG_TEXT, builder.build());    }

十三、自定义通知栏

    public void customNotification(Context context) {        NotificationCompat.Builder builder = new NotificationCompat.Builder(context);        RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.custom_notification);        remoteViews.setTextViewText(R.id.tv_content, "自定义内容");        remoteViews.setImageViewResource(R.id.iv_close, R.drawable.decline);        remoteViews.setOnClickPendingIntent(R.id.iv_close, calleeServiceIntent(context, CalleeService.ACTION_CLOSE, "close"));        builder.setContent(remoteViews)            .setSmallIcon(R.drawable.ic_status_bar_lollipop);        notify(context, NOTIFY_ID_CUSTOM, builder.build());    }
0 0
原创粉丝点击