新浦京81707con > 首页 > Android框架之路,基本操作

原标题:Android框架之路,基本操作

浏览次数:109 时间:2020-03-01

图片 1老伴保佑,代码无BUG

版权注解:本文为博主原创文章,未经博主允许不得转发。
微博:厉圣杰
源码:AndroidDemo/Notification
文中如有疏漏,招待我们留言提出。

简介

Notification,是一种具备全局意义的照看,能够在系统的文告栏中呈现。当 应用程式 向系> 统一发布出布告时,它将先以Logo的款式浮现在通告栏中。顾客能够下拉文告栏查看通告的详实> > 消息。公告栏和抽屉式公告栏均是由系统调整,顾客能够天天查阅。

  • 一:普通的Notification
    • Notification 的基本操作
    • 给 Notification 设置 Action
    • 更新 Notification
    • 取消 Notification
    • 设置 Notification 的照看效果
      • 铃声
      • 震动
      • 呼吸灯
  • 二: 折叠式
  • 三:悬挂式
  • 四:其余相关介绍

      1. 八个照拂归入到一个组内
      1. 待回复效能的
  • 五:全数API 汇总记录

  • Demo地址

后天品种中有用到 Android 布告相关的始末,索性把 Android Notification 相关的文化都看了三遍,稍作梳理,在这里做个总括,以备不时之须。

PendingIntent

pendingIntent是一种特殊的Intent。pendingIntent:等待、未调控的Intent。
珍视的区别在于Intent的施行及时的,而pendingIntent的实施不是马上的。pendingIntent试行的操作实质上是参数字传送进来的Intent的操作,不过利用pendingIntent的意在唯有满意条件才具施行它所含有的Intent操作。
重大运用范围:Notificatio,短音信发送和警示器实施等等。

获取PendingIntent方式:

//获取一个用于启动 Activity 的 PendingIntent 对象
public static PendingIntent getActivity(Context context, int requestCode, Intent intent, int flags);

//获取一个用于启动 Service 的 PendingIntent 对象
public static PendingIntent getService(Context context, int requestCode, Intent intent, int flags);

//获取一个用于向 BroadcastReceiver 广播的 PendingIntent 对象
public static PendingIntent getBroadcast(Context context, int requestCode, Intent intent, int flags)

PendingIntent具备以下三种flag:

  • FLAG_CANCEL_CURRENT:假诺当前系统中已经存在四个等同的 PendingIntent 对象,那么就将先将本来就有的 PendingIntent 裁撤,然后再一次生成多个 PendingIntent 对象。
  • FLAG_IMMUTABLE:创建的PendingIntent不可变,API23加入。
  • FLAG_NO_CREATE:举例当前系统中空头支票同样的 PendingIntent 对象,系统将不会创造该 PendingIntent 对象而是直接再次来到 null 。
  • FLAG_ONE_SHOT:该 PendingIntent 只效劳一遍。
  • FLAG_UPDATE_CURRENT:纵然系统中已存在该 PendingIntent 对象,那么系统将保留该 PendingIntent 对象,然则会利用新的 Intent 来更新在此之前 PendingIntent 中的 Intent 对象数据,譬喻更新 Intent 中的 Extras。

二个 Notification 的必须属性有三项,若是不安装则在运作时会抛出极其:

温故而知新,可感觉师矣~

普通Notification

发送Notification的步骤:

  1. 获取NotificationManager实例;
  2. 实例化Notification.Builder并设置相关属性(Android3.0上述State of Qatar;
  3. 透过 builder.build(卡塔尔国 方法生成 Notification 对象;
  4. 经过NotificationManager实例发送通告。

代码达成:

public void sendNotification(View view) {
    NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

    Notification notification = new Notification.Builder(this)
       .setSmallIcon(R.mipmap.ic_launcher)
       .setContentTitle("普通通知")
       .setContentText("这是普通通知内容")
       .setAutoCancel(true)
       .build();

    manager.notify(1, notification);
}

利用PendingIntent给Notification设置 Action:

public void common_notification(View view) {
    NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

    PendingIntent intent = PendingIntent.getActivity(this, 0, new Intent(Intent.ACTION_VIEW,
               Uri.parse("http://www.mrsorrow.xin")), PendingIntent.FLAG_CANCEL_CURRENT);

    Notification notification = new Notification.Builder(this)
         .setSmallIcon(R.mipmap.ic_launcher)
         .setContentTitle("普通通知")
         .setContentText("这是普通通知内容")
         .setAutoCancel(true) //点完消失
         .setContentIntent(intent)
         .build();

         manager.notify(2, notification);
}

履新布告:
更新布告只需求再度发送相似 ID 的公告就可以,倘若在此以前的通知还没被吊销,则会平素更新该通报有关的质量;假设早前的打招呼已经被撤回,则会再一次创造叁个新通报。

图片 2

api

收回通告:
共两种艺术:

  1. 设置了setAutoCancel()或FLAG_AUTO_CANCEL的布告,点击该照会时会清除它;
  2. 因此NotificationManager调用cancel(int id卡塔尔(قطر‎方法消亡钦命 ID 的照应;
  3. 由此NotificationManager调用 cancel(String tag, int id卡塔尔 方法清除钦赐TAG和ID的通告;
  4. 由此NotificationManager调用cancelAll(卡塔尔(قطر‎方法扼杀全部该接受在此以前发送的打招呼。

假设你是通过 NotificationManager.notify(String tag, int id, Notification notify卡塔尔国 方法创制的打招呼,那么只可以通过 NotificationManager.cancel(String tag, int id卡塔尔国方法本事免去对应的照管,调用NotificationManager.cancel(int id卡塔尔国 无效。

  • 小图标,通过 setSmallIcon()方法设置
  • 标题,通过 setContentTitle()主意设置
  • 内容,通过setContentText() 方法设置

下图是自身对 Notification 做的合计导图,也是本文的要紧逻辑。
![Android Notification](http://odsdowehg.bkt.clouddn.com/Android Notification.png)

设置Notification的打招呼效果

设置铃声:

Notification notification = new Notification.Builder(this)
    .setSmallIcon(R.mipmap.ic_launcher)
    .setContentTitle("普通通知")
    .setContentText("这是普通通知内容")
    .setAutoCancel(true)
    .setContentIntent(intent)
    .setDefaults(Notification.DEFAULT_SOUND) //默认铃声
    .build();

设置震惊:

Notification notification = new Notification.Builder(this)
    .setSmallIcon(R.mipmap.ic_launcher)
    .setContentTitle("普通通知")
    .setContentText("这是普通通知内容")
    .setAutoCancel(true)
    .setContentIntent(intent)
    .setDefaults(Notification.DEFAULT_VIBRATE)
    .build();

设置呼吸灯:
(这里不算,原因不详。三星(Samsung卡塔尔国4C,MIUI8,猜疑被拦截...卡塔尔

Notification notification = new Notification.Builder(this)
    .setSmallIcon(R.mipmap.ic_launcher)
    .setContentTitle("普通通知")
    .setContentText("这是普通通知内容")
    .setAutoCancel(true)
    .setContentIntent(intent)
    .setLights(0x7788aa, 3000, 3000)
    //.setDefaults(Notification.DEFAULT_ALL)
    .build();

正文首要叙述 Notification 的基本操作部分,进级部分的剧情还在就学ing~

折叠式Notification

折叠式Notification是一种自定义视图的Notification,用来展现长文本和一些自定义的结构的场所。它有三种意况,一种是通常状态下的视图(假如不是自定义的话和方面普通通告的视图样式一样),一种是打开状态下的视图。和平凡Notification差异的是,大家须求自定义的视图,而那个视图显示的进程和我们成立视图的过程不再三个进度,所以我们要求采取RemoteViews。

发送折叠式通告代码:

public void fold_notification(View view) {
  NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

  PendingIntent intent = PendingIntent.getActivity(this, 0, new   Intent(Intent.ACTION_VIEW,
  Uri.parse("http://www.mrsorrow.xin")), PendingIntent.FLAG_CANCEL_CURRENT);

  Notification notification = new Notification.Builder(this)
    .setSmallIcon(R.mipmap.ic_launcher)
    .setContentTitle("折叠通知")
    .setContentText("这是折叠通知内容")
    .setAutoCancel(true)
    .setContentIntent(intent)
    .setDefaults(Notification.DEFAULT_VIBRATE)
    .build();

  notification.bigContentView = new RemoteViews(getPackageName(), R.layout.notification_fold);

  manager.notify(2, notification);
}

自定义视图构造:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical">

  <ImageView
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_gravity="center"
    android:src="@drawable/weixin"/>

  <TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="20dp"
    android:text="折叠式通知展开"
    android:gravity="center"/>
</LinearLayout>

本文由新浦京81707con发布于首页,转载请注明出处:Android框架之路,基本操作

关键词: 新浦京81707con Android Android开发 A 三种

上一篇:澳门新葡亰9810.com史上最精炼android四大组件基础

下一篇:没有了