通知栏

通知(Notification)是Android系统中比较有特色的一个功能,当某个应用程序希望向用户发出一些提示信息,而该应用程序又不在前台运行时,就可以借助通知来实现。发出一条通知后,手机最上方的状态栏中会显示一个通知的图标,下拉状态栏后可以看到通知的详细内容。

通过NotificationManager来对通知进行管理,可以调用Context的getSystemService()方法获取到。getSystemService()方法接收一个字符串参数用于确定获取系统的哪个服务,这里我们传入Context.NOTIFICATION_SERVICE即可。接下来需要使用一个Builder构造器来创建Notification对象,相关内容

1,标题  2,文本  3,方法用于指定通知被创建的时间,以毫秒为单位,当下拉系统状态栏时,这里指定的时间会显示在相应的通知上  4,在系统状态栏的小图标 5,下拉时显示的大图标 6.相应点击事件 7,使手机震动(点击后多少毫秒开始,静止时间,震动时间)可叠加。但需要声明权限。 8,播放音频,每个手机的/system/media/audio/ringtones目录下都有很多的音频文件

9,关闭显屏时的Led闪烁,(颜色,静止时间,闪烁时间)。10.点击通知后通知会从通知栏消失会消失     11.创建

notify(id,Notification).显示

  Notification notification = new NotificationCompat.Builder(MainActivity.this,channeId)

                        .setContentTitle("This is content title")
                        .setContentText("This is content text")
                        .setWhen(System.currentTimeMillis())
                        .setSmallIcon(R.mipmap.ic_launcher)
                        .setLargeIcon(BitmapFactory.decodeResource(getResources(),
                                R.mipmap.ic_launcher))
                        .setContentIntent(pi)
                        .setVibrate(new long[] {0, 1000, 1000, 1000,2000,1000,2000 })
                        .setSound(Uri.fromFile(new File("/system/media/audio/ringtones/Hello_Ya.ogg")))
                        .setLights(Color.BLACK, 1000, 1000)
                        .setAutoCancel(true)
                        .build();
                manager.notify(1, notification);

点击通知栏打出点击事件是通过PendingIntent,PendingIntent的用法同样很简单,它主要提供了几个静态方法用于获取PendingIntent的实例,可以根据需求来选择是使用getActivity()方法、getBroadcast()方法,还是getService()方法。这几个方法所接收的参数都是相同的,第一个参数依旧是Context,不用多做解释。第二个参数一般用不到,通常都是传入0即可。第三个参数是一个Intent对象,我们可以通过这个对象构建出PendingIntent的“意图”。第四个参数用于确定PendingIntent的行为,有FLAG_ONE_SHOTFLAG_NO_CREATEFLAG_CANCEL_CURRENTFLAG_UPDATE_CURRENT这4种值可选,每种值的具体含义你可以查看文档,通常情况下这个参数传入0就可以了。构造器还可以再连缀一个setContentIntent()方法,接收的参数正是一个PendingIntent对象。因此,这里就可以通过PendingIntent构建出一个延迟执行的“意图”,当用户点击这条通知时就会执行相应的逻辑。

public class MainActivity extends AppCompatActivity  {
    private String channeId;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent=new Intent(MainActivity.this,Main2Activity.class);
                PendingIntent pi = PendingIntent.getActivity(MainActivity.this, 0, intent, 0);
                NotificationManager manager = (NotificationManager) getSystemService
                        (NOTIFICATION_SERVICE);
                Notification notification = new NotificationCompat.Builder(MainActivity.this,channeId)

                        .setContentTitle("This is content title")
                        .setContentText("This is content text")
                        .setWhen(System.currentTimeMillis())
                        .setSmallIcon(R.mipmap.ic_launcher)
                        .setLargeIcon(BitmapFactory.decodeResource(getResources(),
                                R.mipmap.ic_launcher))
                        .setContentIntent(pi)
                        .setVibrate(new long[] {0, 1000, 1000, 1000,2000,1000,2000 })
                        .setSound(Uri.fromFile(new File("/system/media/audio/ringtones/Hello_Ya.ogg")))
                        .setLights(Color.BLACK, 1000, 1000)
                        .setAutoCancel(true)
                        .build();
                manager.notify(1, notification);
            }
        });
    }


}

高级特性


setStyle()

这个方法允许我们构建出富文本的通知内容。也就是说通知中不光可以有文字和图标,还可以包含更多的东西。setStyle()方法接收一个NotificationCompat.Style参数,这个参数就是用来构建具体的富文本信息的,如长文字、图片等。

 .setStyle(new NotificationCompat.BigTextStyle().bigText("Learn how to build
            notifications, send and sync data, and use voice actions. Get the official
            Android IDE and developer tools to build apps for Android."))

合理化显示长文本

.setStyle(new NotificationCompat.BigPictureStyle().bigPicture
            (BitmapFactory.decodeResource(getResources(), R.drawable.big_image)))

显示图片

setPriority()方法,它可以用于设置通知的重要程度。RIORITY_DEFAULT表示默认的重要程度,和不设置效果是一样的;PRIORITY_MIN表示最低的重要程度,系统可能只会在特定的场景才显示这条通知,比如用户下拉状态栏的时候;PRIORITY_LOW表示较低的重要程度,系统可能会将这类通知缩小,或改变其显示的顺序,将其排在更重要的通知之后;PRIORITY_HIGH表示较高的重要程度,系统可能会将这类通知放大,或改变其显示的顺序,将其排在比较靠前的位置;PRIORITY_MAX表示最高的重要程度,这类通知消息必须要让用户立刻看到,甚至需要用户做出响应操作。

.setPriority(NotificationCompat.PRIORITY_MAX)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值