Notification——形形色色的通知(一)

  Notification在Android的App的使用中,非常常用。通常有两种情况,一种是需要给用户发一个通知,告知用户,然后用户点击可以打开详情页面;另一种情况是有时候会将一些耗时操作放在后台,不影响当前界面,但又希望用户知道后台的进度或者其他一些信息。在此,记录Notification的使用方法。

1.Notificiton需要一个视图,先用xml布局:

notify_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/notify_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <ImageView
        android:id="@+id/notify_icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/ic_launcher" />
    <ProgressBar
        style="@android:style/Widget.ProgressBar.Horizontal"
        android:id="@+id/notify_progress"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/notify_icon"
        android:indeterminate="false"/>
    <Button
        android:id="@+id/cancel_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:textSize="14sp"
        android:text="取消"
        />
    <LinearLayout
        android:id="@+id/text_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@id/notify_icon"
        android:layout_alignTop="@id/notify_icon"
        android:layout_toRightOf="@id/notify_icon"
        android:layout_toLeftOf="@id/cancel_btn"
        android:gravity="center"
        android:orientation="vertical"
        android:paddingLeft="10dp">
        <TextView
            android:id="@+id/notify_title"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@id/notify_icon"
            android:paddingBottom="5dp"
            android:text="这是一条消息" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@id/notify_icon"
            android:layout_toRightOf="@id/notify_icon"
            android:text="点击查看消息" />
    </LinearLayout>
</RelativeLayout>

2.实现点击通知后的跳转界面

xml布局:

notify_des_layout:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/notify_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <ImageView
        android:id="@+id/notify_icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/ic_launcher" />
    <ProgressBar
        style="@android:style/Widget.ProgressBar.Horizontal"
        android:id="@+id/notify_progress"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/notify_icon"
        android:indeterminate="false"/>
    <Button
        android:id="@+id/cancel_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:textSize="14sp"
        android:text="取消"
        />
    <LinearLayout
        android:id="@+id/text_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@id/notify_icon"
        android:layout_alignTop="@id/notify_icon"
        android:layout_toRightOf="@id/notify_icon"
        android:layout_toLeftOf="@id/cancel_btn"
        android:gravity="center"
        android:orientation="vertical"
        android:paddingLeft="10dp">
        <TextView
            android:id="@+id/notify_title"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@id/notify_icon"
            android:paddingBottom="5dp"
            android:text="这是一条消息" />
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@id/notify_icon"
            android:layout_toRightOf="@id/notify_icon"
            android:text="点击查看消息" />
    </LinearLayout>
</RelativeLayout>

3.初始化Notification

final static int UPLOAD_IMAGE = 111;final static int NOTIFY_DES = 112;
private void initNotification(){
        String notifyTitle = "这是消息的标题";
        String notifyContent = "这是消息的内容";
        // 建立点击Intent
        Intent intent = new Intent(this , NotifyDesActivity.class);
        intent.putExtra("title" , notifyTitle);
        intent.putExtra("content", notifyContent);
        PendingIntent pendingIntent = PendingIntent.getActivity(this, NOTIFY_DES, intent, PendingIntent.FLAG_UPDATE_CURRENT);
        // 将notification的布局引入
        remoteViews = new RemoteViews(getPackageName() , R.layout.notify_layout);
        // 创建notificationpu 实例
        notifyBuilder = new NotificationCompat.Builder(this)
                // 通知时的图标
                .setSmallIcon(R.drawable.add_group_btn_img)
                // 下拉窗中的通知布局
                .setContent(remoteViews)
                // 通知时的提示
                .setTicker("收到一条消息")
                // 通知被点击时的事件
                .setContentIntent(pendingIntent)
                // 通知被点击后是否自动关闭
                .setAutoCancel(true);
    }    

PS:setSmallIcon是通知的时的图标,在通知结束后,这个图标会留在手机顶部。这个图标的尺寸是有限制的。

4.发出通知

    private void sendNotification(){
        // 获取默认通知铃声,此处可以自己设置
        Uri soundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        // 为通知设置铃声
        notifyBuilder.setSound(soundUri);
        // 为通知设置振动 停1000ms 震200ms 停1000ms 震200ms
        notifyBuilder.setVibrate(new long[]{1000, 200, 1000, 200});
        // 设置通知id,并发出通知
        notificationManager.notify(UPLOAD_IMAGE, notifyBuilder.build());
        notifyBuilder.setSound(null);
        notifyBuilder.setVibrate(null);
    }

PS:通知最重要的就是id,我可以再new一个通知实例,只要id相同,再发通知时,只会更新当前通知的信息。

其中

        notifyBuilder.setSound(null);
        notifyBuilder.setVibrate(null);

就是为了再次发起通知进行更新时,不会有振动和铃声的提示。

5.当我们想更新通知栏里的信息时,只需要设置相相关信息,然后以相同id重新发送通知即可。

    private void updateNotification() {
        remoteViews.setProgressBar(R.id.notify_progress , 100 , 50 ,false);
        notificationManager.notify();
    }

Done!

时间: 2024-11-16 05:49:30

Notification——形形色色的通知(一)的相关文章

Notification——形形色色的通知(二)

上一章写到如何发出一个通知.但是,通知既然作为一个View,它应该能与我们的业务逻辑有一系列交互.比如,我们可以通过Notification的remoteview中的Button控制一下业务逻辑(如播放/暂停音乐),或者用进度条显示后台操作的进度.在此我写了一个简单的音乐播放器.我们能够在Notification的remoteview中的Button,控制音乐的播放,通过其中的进度条,得知播放音乐的进度. Notification的初始化为 private void initNotificati

ios 远程通知(Remote Notification)和本地通知(Local Notification)

ios通知分为远程通知和本地通知,远程通知需要连接网络,本地通知是不需要的,不管用户是打开应用还是关闭应用,我们的通知都会发出,并被客户端收到 我们使用远程通知主要是随时更新最新的数据给用户,使用本地通知主要是提醒用户来完成一些任务 远程通知 Remote Notification: 其主要的工作原理为:客户端发送自己的UUID和Bundle ID给苹果的APNs服务器-->苹果的APNs服务器加密后返回一个deviceToken给客户端-->客户端拿到devideToken后将其发送给app

形形色色的通知(三)——番外

前面关于Notification的介绍已经能完成大部分的功能,这篇主要记录一下,看到但是暂时还没用的上知识点和功能. 一.对于一个app,notification的区别是由id或者id与tag组成的一个对,作为唯一的notification标识. * Each of the notify methods takes an int id parameter and optionally a * {@link String} tag parameter, which may be {@code nu

cordova插件之Local Notification(本地通知)

原文链接:http://www.ncloud.hk/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/cordova-pluginslocal-notification/ 本地通知的基本目的是使应用程序能够通知用户,它为他们提供了一些信息例如,当应用程序没有在前台运行时,通知用户一个消息或即将到来的约会.本地通知大多是基于时间的,如果触发就会在通知中心显示并呈现给用户. local notification插件可以通过schedule()一次安排一个或多个本地通知,这些通

修改otrs notification master邮件通知地址和名称

framework-core-

Notification Centers 通知中心

Notification Centers 通知中心 A notification center manages the sending and receiving of notifications. It notifies all observers of notifications meeting specific criteria. The notification information is encapsulated in NSNotification objects. Client o

Android Notification自定义通知样式你要知道的事

本文将根据个人经验对Notification做个总结,以供参考! 什么是通知(Notification) 通知是一个可以在应用程序正常的用户界面之外显示给用户的消息. 通知发出时,它首先出现在状态栏的通知区域中,用户打开通知抽屉可查看通知详情.通知区域和通知抽屉都是用户可以随时查看的系统控制区域. 作为安卓用户界面的重要组成部分,通知有自己的设计指南.在Android 5.0(API level 21)中引入的 Material Design 的变化是特别重要的,更多信息请阅读 通知设计指南.

通知 Notification 详解

效果 通知栏-刚收到通知时 通知栏-收到通知几秒后 标准视图 大视图-下滑前是标准视图 大视图-下滑后显示大视图 自定义通知 讲解 Notification,俗称通知,是一种具有全局效果的通知,它展示在屏幕的顶端,首先会表现为一个图标的形式,当用户向下滑动的时候,展示出通知具体的内容. 注意:因为一些Android版本的兼容性问题,对于Notification而言,Android3.0是一个分水岭,在其之前构建Notification推荐使用Notification.Builder构建,而在An

通知(Toast+Notification)

Toast简要说明:(前面已经用过好多次了) Toast是一种非持久的(在屏幕上面留一会儿就消失了),提供给用户简洁提示信息的视图. 它不阻断用户的操作,一般用于显示一些不重要的信息.(比方说设置音量的那个提示) Toast类可以用于创建和显示toast信息,toast一般翻译为吐司. 常用方法:(有set方法,也有get方法) Toast.makeText(context, text, duration);  //返回Toast对象 toast.setDuration(duration);