Notification示例

原创 2017年04月25日 16:18:18

Notification

  NotificationManager类是一个通知管理器类,这个对象是由系统维护的服务,是以单例模式获得,所以一般并不直接实例化这个对象。在Activity中,可以使用Activity.getSystemService(String)方法获取NotificationManager对象,Activity.getSystemService(String)方法可以通过Android系统级服务的句柄,返回对应的对象。在这里需要返回NotificationManager,所以直接传递Context.NOTIFICATION_SERVICE即可。
 
总结了下面几个通知:

这里写图片描述

上代码:

最基本的通知

    /**
     * 最基本的通知
     *
     */
    private void sendNotification() {

        //实例化NotificationCompat.Builde并设置相关属性
        NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
                //设置小图标
                .setSmallIcon(R.mipmap.rivers)
                //设置通知标题
                .setContentTitle("最简单的Notification")
                .setContentText("只有小图标、标题、内容");

        //设置通知时间,默认为系统发出通知的时间,通常不用设置
        //.setWhen(System.currentTimeMillis());
        //通过builder.build()方法生成Notification对象,并发送通知,id=1
        notifyManager.notify(1, builder.build());
    }

bigtext风格的通知

bigtext 说白了就是长文字的提醒。但是在4.0 和5.0上显示的效果不同呢。刚开始都是显示的title,4.0的系统呢得手动滑动才能出来,5.0的系统初次会有一个是否接受通知的提醒,点击了允许之后才会显示出bittext

     /**bigtext风格的通知
     *
     */
    private void sendNotification() {

        //实例化NotificationCompat.Builde并设置相关属性
        NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
                //设置小图标
                .setSmallIcon(R.mipmap.rivers)
                //设置通知标题
                .setContentTitle("最简单的Notification")
                .setStyle(new NotificationCompat.BigTextStyle()
                        .bigText("bigview 的显示,北海市位于广西北部湾畔,是国家历史文化名城。这里面向东南亚,背靠大西南,是西南出海大通道的重要出海口。"))
                //设置通知内容
                .setContentText("只有小图标、标题、内容");

        //设置通知时间,默认为系统发出通知的时间,通常不用设置
        //.setWhen(System.currentTimeMillis());
        //通过builder.build()方法生成Notification对象,并发送通知,id=1
        notifyManager.notify(1, builder.build());
    }

带图片的的通知

  /**
     * 
     */
    private void sendNotificationWithPictureStyle() {

        //实例化NotificationCompat.Builde并设置相关属性
        NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
                //设置小图标
                .setSmallIcon(R.mipmap.rivers)
                //设置通知标题
                .setContentTitle("带图片的Notification")
                .setStyle(new NotificationCompat.BigPictureStyle().bigPicture(BitmapFactory.decodeResource(getResources(), R.drawable.pic1)))
                // .setStyle(new NotificationCompat.BigTextStyle(.bigText("bigview 的显示,北海市位于广西北部湾畔,是国家历史文化名城。这里面向东南亚,背靠大西南,是西南出海大通道的重要出海口。"))
                //设置通知内容
                .setContentText("有小图标、标题、内容");

        //设置通知时间,默认为系统发出通知的时间,通常不用设置
        //.setWhen(System.currentTimeMillis());
        //通过builder.build()方法生成Notification对象,并发送通知,id=1
        notifyManager.notify(2, builder.build());
    }

inbox的的通知

    /**
     * 
     */
    private void sendNotificationWithInbox() {

        //实例化NotificationCompat.Builde并设置相关属性
        NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
                //设置小图标
                .setSmallIcon(R.mipmap.rivers)
                //设置通知标题
                .setContentTitle("inboxStyle Notification")
                .setStyle(
                    new NotificationCompat.InboxStyle()
                        .addLine("第一行,第一行,第一行,第一行,第一行,第一行,第一行")
                        .addLine("第二行")
                        .addLine("第三行")
                        .addLine("第四行")
                        .addLine("第五行")
                        .setSummaryText("SummaryText"))
                //设置通知内容
                .setContentText("有小图标、标题、内容");

        //设置通知时间,默认为系统发出通知的时间,通常不用设置
        //.setWhen(System.currentTimeMillis());
        //通过builder.build()方法生成Notification对象,并发送通知,id=1
        notifyManager.notify(3, builder.build());

发送一个点击跳转到indexActivity的消息

 /**
     * 发送一个点击跳转到indexActivity的消息
     */
    private void sendSimplestNotificationWithAction() {
        //获取PendingIntent
        Intent mainIntent = new Intent(this, indexPopActivity_.class);
        PendingIntent mainPendingIntent = PendingIntent.getActivity(this, 0, mainIntent, PendingIntent.FLAG_UPDATE_CURRENT);
        //创建 Notification.Builder 对象
        NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
                .setSmallIcon(R.mipmap.fish)
                //点击通知后自动清除
                .setAutoCancel(true)
                .setContentTitle("我是带Action的Notification")
                .setContentText("点我会打开indexActivity")
                .setContentIntent(mainPendingIntent)

                // 点击之后通知消失
                .setAutoCancel(true);
        //发送通知
        notifyManager.notify(4, builder.build());
    }

自定义view的通知

 private void sendNotificationWithCustomView(){
        //miniSdk>24

        RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.notification);
        contentView.setTextViewText(R.id.textView2, "show me  我是自定义的view");
        contentView.setTextViewText(R.id.button, "按钮");
        contentView.setTextViewText(R.id.btn2, "按钮2");
        Notification.Builder builder = new Notification.Builder(this)
                .setContent(contentView)
                .setSmallIcon(R.mipmap.fish);
        //发送通知
        notifyManager.notify(5, builder.build());



    }

横幅通知 悬浮的样子

此种效果只在5.0以上系统中有效
mainfest中需要添加、

 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
    /**
     * 横幅通知 悬浮的样子
     */
    private void sendNotificationWithFull(){
        NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
        builder.setContentTitle("横幅通知");
        builder.setContentText("请在设置通知管理中开启消息横幅提醒权限");
        builder.setDefaults(NotificationCompat.DEFAULT_ALL);
        builder.setSmallIcon(R.mipmap.ic_launcher);
        builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.fish));
        Intent intent = new Intent(this,indexPopActivity_.class);
        PendingIntent pIntent = PendingIntent.getActivity(this,1,intent,0);
        builder.setContentIntent(pIntent);
        //这句是重点
        builder.setFullScreenIntent(pIntent,true);
        builder.setAutoCancel(true);
        Notification notification = builder.build();
        notifyManager.notify(6,notification);
    }
版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

Android ApiDemos示例解析(26):App->Notification->IncomingMessage

应用程序可以使用Notifications来通知用户某个事件发生了(如收到短信)。类NotificationManager 用来处理Notification, NotificationManager可...

Android ApiDemos示例解析(29):App->Notification->Status Bar

这个例子的Icons Only 和 Icons and marquee 没有什么特别好说明的。 而Use Remote views in balloon 介绍了可以自定义在Extended Stat...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

Notification示例(Project)

1、 package leadingmis.mobile.main; import android.app.Activity; import android.app.Notification; ...

Notification固有的扩展示例

需求: 具备知识: 熟悉Flash Builder4.6, ActionScript3和AIR/Flex 所需产品: Adobe AIR 3               示例文件:notific...

Notification(状态栏通知)知识简摘及示例

附:中文版官方详解: 一、什么是Notification: 通知系统使用户得知应用中重要的事情,例如有新信息到来或者日历事件提醒。将通知作为一个新的通道,提醒用户重要的事情或者记录下用户没有注意到的事...

Android开发——Notification手机状态栏通知介绍及示例

我们先把课件对Notification的简单介绍放上来,方便对Notification的理解。 一:Notification的简介== Notification是显示在手机状态栏的通知,手机状态栏...

Android种使用Notification实现通知管理以及自定义通知栏(Notification示例四)

示例一:实现通知栏管理 当针对相同类型的事件多次发出通知,作为开发者,应该避免使用全新的通知,这时就应该考虑更新之前通知栏的一些值来达到提醒用户的目的。例如我们手机的短信系统,当不断有新消息传来时,...

Android中使用Notification实现普通通知栏(Notification示例一)

Notification是在你的应用常规界面之外展示的消息。当app让系统发送一个消息的时候,消息首先以图表的形式显示在通知栏。要查看消息的详情需要进入通知抽屉(notificationdrawer)...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)