android 通知写法_Android中使用Notification实现普通通知栏(Notification示例一)

Notification是在你的应用常规界面之外展示的消息。当app让系统发送一个消息的时候,消息首先以图表的形式显示在通知栏。要查看消息的详情需要进入通知抽屉(notificationdrawer)中查看。(notificationdrawer)都是系统层面控制的,你可以随时查看,不限制于app。

Notification的设计:

作为android UI中很重要的组成部分,notification拥有专属于自己的设计准则。

Notification的界面元素在通知抽屉中的notification有两种显示方式,取决于你的android版本以及notificationdrawer的状态。

Notification的两种显示方式:

(1)普通视图

这种风格是notification drawer的标准显示方式。

(2)宽视图

指你的notification被展开的时候会显示更大的视图,这种风格是android4.1之后才有的新特性。

下面我们详细介绍普通视图的实现:

在图通视图中,notification最高64dp,即使你创建了一个宽视图风格的notification,在未展开的情况下也是以普通大小显示出来。下面是一个普通的notification。

蓝色指示框所代表的的意思如下:

1.标题

2.大图标

3.通知内容

4.通知数据

5.小图标

6.Notification的发布时间。

可以通过调用setWhen()设置一个明确的时间,

默认是系统收到该notification的时间。

下面我们是我们本次的演示效果:

本次在普通视图的基础上添加了点击页面跳转的效果,可以理解为添加Notification的动作与行为:

虽然这也是可选的,但是你还是应该为你的notification至少添加一种行为:允许用户通过点击notification进入一个activity中进行更多的查看或者后续操作。一个notification可以提供多种动作,而且你也应该让用户点击一个notification之后能总是有相应的响应动作,通常是打开一个activity。你还可以在notification中添加能响应点击事件的button,比如延迟一下闹钟,或者立即回复一条短消息。

在notification内部,一个动作本身是被定义在一个PendingIntent中,PendingIntent包含了一个用于启动你app中activity的intent。要将PendingIntent和一个手势联系起来,你需要调用合适的NotificationCompat.Builder方法。

比如你想在点击notification文字的时候启动activity,你需要调用NotificationCompat.Builder的setContentIntent()来添加PendingIntent。启动一个activity是notification动作响应中最普遍的一类。

第一步:Layout中的activity_main.xml(仅设置触发按钮):

1 <?xml version="1.0" encoding="utf-8"?>

2

4 xmlns:tools="http://schemas.android.com/tools"

5 android:id="@+id/activity_main"

6 android:layout_width="match_parent"

7 android:layout_height="match_parent"

8 tools:context="com.example.administrator.day12.MainActivity">

9

11 android:layout_width="match_parent"

12 android:layout_height="wrap_content"

13 android:id="@+id/button"

14 android:onClick="show1" />

15

第二步:Layout中的跳转页面activity_content.xml(仅设置显示文本):

1 <?xml version="1.0" encoding="utf-8"?>

2

3 xmlns:tools="http://schemas.android.com/tools"

4 android:id="@+id/activity_content"

5 android:layout_width="match_parent"

6 android:layout_height="match_parent"

7 tools:context="com.example.administrator.day12.ContentActivity">

8

10 android:layout_height="match_parent"

11 android:gravity="center"

12 android:textSize="30sp"

13 android:text="十胜十败" />

14

第三步:java(主界面按钮的点击事件)实现代码MainActivity.java:

1 importandroid.app.Notification;2 importandroid.app.NotificationManager;3 importandroid.app.PendingIntent;4 importandroid.content.Context;5 importandroid.content.Intent;6 importandroid.graphics.BitmapFactory;7 importandroid.support.v7.app.AppCompatActivity;8 importandroid.os.Bundle;9 importandroid.support.v7.app.NotificationCompat;10 importandroid.view.View;11 importandroid.widget.RemoteViews;12 public class MainActivity extendsAppCompatActivity {13 private static final int NO_1 =0x1;14 @Override15 protected voidonCreate(Bundle savedInstanceState) {16 super.onCreate(savedInstanceState);17 setContentView(R.layout.activity_main);18 }19 public voidshow1(View v){20 NotificationCompat.Builder builder = new NotificationCompat.Builder(this);21 builder.setSmallIcon(R.mipmap.guojia);22 builder.setContentTitle("郭嘉");23 builder.setContentText("我们打袁绍吧");24 //设置Notification.Default_ALL(默认启用全部服务(呼吸灯,铃声等)

25 builder.setDefaults(Notification.DEFAULT_ALL);26 //调用NotificationCompat.Builder的setContentIntent()来添加PendingIntent

27 Intent intent = new Intent(this, ContentActivity.class);28 intent.putExtra("info", "郭嘉给你发了一个计策!");29 PendingIntent pi = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);30 builder.setContentIntent(pi);31 //获取Notification

32 Notification n =builder.build();33 //通过NotificationCompat.Builder.build()来获得notification对象自己

34 NotificationManager manager =(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);35 //然后调用NotificationManager.notify()向系统转交

36 manager.notify(NO_1, n);37 }38 }

第四步:java(跳转后Activity)功能代码实现ContentActivity.java(只土司):

1 public class ContentActivity extendsAppCompatActivity {2 @Override3 protected voidonCreate(Bundle savedInstanceState) {4 super.onCreate(savedInstanceState);5 setContentView(R.layout.activity_content);6 //通过获取MainActivity中设置的putExtra获取土司内容

7 Toast.makeText(this, getIntent().getStringExtra("info"), Toast.LENGTH_SHORT).show();8 }9 }

演示效果的代码就这些,我们梳理下本次实现的思路:

(1)通过按钮触发点击事件

(2)将notification的一些UI信息以及相关动作赋予NotificationCompat.Builder对象,然后通过NotificationCompat.Builder.build()来获得notification对象自己;然后调用NotificationManager.notify()向系统转交这个通知。

(3)在第二步中通过Builder的setContentIntent()来添加PendingIntent,为Notification添加行为,也就是Activity的跳转

(4)对打开的Activity设置表现的效果。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值