Android基础——Notification使用浅析(二)

本文深入探讨了Android中Notification的使用,包括设置优先级、事件提醒、带下载进度条的Notification、保留Activity返回栈、锁屏通知、折叠与悬挂式Notification、扩展布局以及Notification归类。详细阐述了如何实现各种高级功能,如自定义提醒、进度条、返回栈管理以及在不同Android版本上的适配策略。
摘要由CSDN通过智能技术生成

相关文档:
Android基础——Notification使用浅析(一)

1. 设置优先级

优先级 描述
Notification.PRIORITY_MAX 重要而紧急的通知,通知用户这个事件是时间上紧迫的或者需要立即处理的。
Notification.PRIORITY_HIGH 高优先级用于重要的通信内容,例如短消息或者聊天,这些都是对用户来说比较有兴趣的
Notification.PRIORITY_DEFAULT 默认优先级用于没有特殊优先级分类的通知
Notification.PRIORITY_LOW 低优先级可以通知用户但又不是很紧急的事件。只显示状态栏图标
Notification.PRIORITY_MIN 用于后台消息 (例如天气或者位置信息)。只有用户下拉通知抽屉才能看到内容
builder.setPriority(Notification.PRIORITY_HIGH);

2. 事件

提供了 铃声/振动/呼吸灯 三种提醒方式,可以使用一种或同时使用多种

FLAG 描述
Notification.DEFAULT_SOUND 添加默认声音提醒
Notification.DEFAULT_VIBRATE 添加默认震动提醒
Notification.DEFAULT_LIGHTS 添加默认呼吸灯提醒
Notification.DEFAULT_ALL 时添加以上三种默认提醒
// 添加默认声音提醒
builder.setDefaults(Notification.DEFAULT_SOUND);

// 添加默认呼吸灯提醒,自动添加FLAG_SHOW_LIGHTS
builder.setDefaults(Notification.DEFAULT_LIGHTS);

添加自定义提醒

/ 添加自定义声音提醒
builder.setSound(Uri.parse("path/to/sound"));

// 添加自定义震动提醒
// 延迟200ms后震动300ms,再延迟400ms后震动500ms
long[] pattern = new long[]{
   200,300,400,500}; 
builder.setVibrate(pattern);

// 添加自定义呼吸灯提醒,自动添加FLAG_SHOW_LIGHTS
int argb = 0xffff0000;  // led灯光颜色
int onMs = 300;         // led亮灯持续时间
int offMs = 100;        // led熄灯持续时间
builder.setLights(argb, onMs, offMs);

响应紧急事件(全屏通知事件,比如来电)

Intent intent = new Intent(ACTION);
intent.putExtra("op", op);
PendingIntent pi = PendingIntent.getBroadcast(this, 0, intent, 0);
builder.setFullScreenIntent(pi, true);

3. 带下载进度条的Notification

通知可能包括动画形式的进度指示器,向用户显示正在进行的操作状态。 如果可以估计操作所需的时间以及任意时刻的完成进度,则使用“限定”形式的指示器(进度栏)。 如果无法估计操作的时长,则使用“非限定”形式的指示器(Activity 指示器)

要在 Android 4.0 及更高版本的平台上使用进度指示器,需调用 setProgress()

要显示限定形式的进度栏,需要通过调用 setProgress(max, progress, false) 将进度栏添加到通知,然后发出通知。随着操作的进行,递增 progress 并更新通知

int id = 1;
...
mNotifyManager = (NotificationManager) 
    getSystemService(Context.NOTIFICATION_SERVICE);
mBuilder = new NotificationCompat.Builder(this);
mBuilder.setContentTitle("Picture Download")
    .setContentText("Download in progress")
    .setSmallIcon(R.drawable.ic_notification);
 
// Start a lengthy operation in a background thread
new Thread(
    new Runnable() {
   
        @Override
        public void run() {
   
            int incr;
            for (incr = 0; incr <= 100; incr+=<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值