iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android使用Notification实现普通通知栏(一)
  • 239
分享到

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

notificationAndroid 2022-06-06 05:06:23 239人浏览 薄情痞子
摘要

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

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(仅设置触发按钮):


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
 xmlns:android="Http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:id="@+id/activity_main"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 tools:context="com.example.administrator.day12.MainActivity">
 <Button
  android:text="显示通知"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:id="@+id/button"
  android:onClick="show1" />
</LinearLayout>

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


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:id="@+id/activity_content"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 tools:context="com.example.administrator.day12.ContentActivity">
 <TextView
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:gravity="center"
  android:textSize="30sp"
  android:text="十胜十败" />
</LinearLayout>

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


import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.graphics.BitmapFactory;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.app.NotificationCompat;
import android.view.View;
import android.widget.RemoteViews;
public class MainActivity extends AppCompatActivity {
 private static final int NO_1 =0x1 ;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
 }
 public void show1(View v){
  NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
  builder.setSmallIcon(R.mipmap.guojia);
  builder.setContentTitle("郭嘉");
  builder.setContentText("我们打袁绍吧");
  //设置Notification.Default_ALL(默认启用全部服务(呼吸灯,铃声等)
  builder.setDefaults(Notification.DEFAULT_ALL);
  //调用NotificationCompat.Builder的setContentIntent()来添加PendingIntent
  Intent intent = new Intent(this, ContentActivity.class);
  intent.putExtra("info", "郭嘉给你发了一个计策!");
  PendingIntent pi = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
  builder.setContentIntent(pi);
  //获取Notification
  Notification n = builder.build();
  //通过NotificationCompat.Builder.build()来获得notification对象自己
  NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
  //然后调用NotificationManager.notify()向系统转交
  manager.notify(NO_1, n);
 }
} 

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


public class ContentActivity extends AppCompatActivity {
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_content);
  //通过获取MainActivity中设置的putExtra获取土司内容
  Toast.makeText(this, getIntent().getStringExtra("info"), Toast.LENGTH_SHORT).show();
 }
}

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

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

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

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

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

您可能感兴趣的文章:android notification 的总结分析Android界面 NotificationManager使用Bitmap做图标Android中通知Notification使用实例(振动、灯光、声音)android中创建通知栏Notification代码实例Android中通过Notification&NotificationManager实现消息通知Android编程实现拦截短信并屏蔽系统Notification的方法Android开发 -- 状态栏通知Notification、NotificationManager详解Android中关于Notification及NotificationManger的详解详解Android中Notification通知提醒详解Android中Notification的使用方法


--结束END--

本文标题: Android使用Notification实现普通通知栏(一)

本文链接: https://www.lsjlt.com/news/23012.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android 之 Notification (状态栏通知)详解
    本节引言: 本节带来的是Android中用于在状态栏显示通知信息的控件:Notification,相信大部分 学Android都对他都很熟悉,而网上很多关于Notification的使用教程都是基于2.x的,而 现在普遍的Android...
    99+
    2023-08-31
    android android studio ide
  • Android Studio Notification(状态栏通知) 不显示通知 解决
    引言:在学习的过程中,我发现,无论怎么修改,甚至是直接复制了大佬的代码,我的程序都不能正确的弹出状态栏通知,在经过一晚上的纠缠后,终于找到了原因 通知不显示可能由多种原因引起: 通知权限:确保你的应用已经获得了正确的通知权限。在And...
    99+
    2023-09-29
    android studio android ide
  • Android 通知栏的使用方法
    目录一、设置通知内容二、创建渠道三、设置通知栏的点击操作四、显示通知一、设置通知内容 //CHANNEL_ID,渠道ID,Android 8.0及更高版本必须要设置 N...
    99+
    2024-04-02
  • 如何在Android中实现通知栏
    今天就跟大家聊聊有关如何在Android中实现通知栏,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、设置通知内容//CHANNEL_ID,渠道ID,Android 8.0...
    99+
    2023-06-15
  • Android中怎么使用AlarmManager和Notification实现定时通知提醒功能
    这期内容当中小编将会给大家带来有关Android中怎么使用AlarmManager和Notification实现定时通知提醒功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。AlarmManager简介A...
    99+
    2023-05-30
    android alarmmanager notification
  • 如何使用HTML5实现Notification API桌面通知功能
    这篇文章将为大家详细讲解有关如何使用HTML5实现Notification API桌面通知功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。   为什么需要HTML5的...
    99+
    2024-04-02
  • Android开发中怎么实现一个沉浸式通知栏
    Android开发中怎么实现一个沉浸式通知栏?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。①DrawerLayout+Toolbar添加依赖库(谷歌提供)compile&nbs...
    99+
    2023-05-31
    android roi
  • Android通知Notification使用全解析,看这篇就够了
    1、效果 2、简介 通知是 Android 在您的应用 UI 之外显示的消息,用于向用户提供提醒、来自其他人的通信或来自您的应用的其他及时信息。用户可以点击通知打开您的应用或直接从通知中执行操作。 2.1、展示 通知以不同的位置和格式向用...
    99+
    2023-08-16
    android notification material design android通知 通知
  • Html5中桌面通知Notification的实现示例
    这篇文章主要介绍Html5中桌面通知Notification的实现示例,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1. 实例一个Notificationlet n = new ...
    99+
    2023-06-09
  • Android应用中怎么实现通知栏闪动效果
    Android应用中怎么实现通知栏闪动效果?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。显示通知代码:private void showNotification(Context...
    99+
    2023-05-31
    android roi
  • Android Notification实现动态显示通话时间
    基于android N MTK释放的源码,供大家参考,具体内容如下 本文主要讲解如何在 IncallUI 的notification 上面不停地更新显示当前已通话多长时间,从而达到和...
    99+
    2024-04-02
  • HTML5如何实现Notification API桌面通知功能
    这篇文章主要为大家展示了“HTML5如何实现Notification API桌面通知功能 ”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“HTML5如何实现Not...
    99+
    2024-04-02
  • Android媒体通知栏多系统适配怎么实现
    今天小编给大家分享一下Android媒体通知栏多系统适配怎么实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。需要考虑的问题...
    99+
    2023-07-05
  • HTML5中如何实现Web Notification桌面通知功能
    这篇文章主要介绍了HTML5中如何实现Web Notification桌面通知功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。有的时候我们会在桌面右下角看到这样的提示:这种...
    99+
    2023-06-09
  • Android通知栏增加快捷开关功能如何实现
    本篇内容主要讲解“Android通知栏增加快捷开关功能如何实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android通知栏增加快捷开关功能如何实现”吧!TileService继承自Serv...
    99+
    2023-07-05
  • 如何使用HTML5的Notification API制作web通知功能
    本篇内容介绍了“如何使用HTML5的Notification API制作web通知功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大...
    99+
    2024-04-02
  • Android通知栏增加快捷开关的功能实现教程
    目录创建使用:1、自定义一个TileService类。2、在应用程序的清单文件中声明TileService。总结  我们通常可以在通知栏上看到“飞行模式&rdq...
    99+
    2023-01-30
    android状态栏添加快捷开关 android通知栏开启 通知栏快捷功能
  • 怎么使用SAP云平台的Notification服务给Android应用推送通知消息
    今天就跟大家聊聊有关怎么使用SAP云平台的Notification服务给Android应用推送通知消息,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。登录SAP Cloud Platf...
    99+
    2023-06-03
  • Android媒体通知栏多系统适配实例讲解
    目录一,先看效果图二,实现方式做音乐播放器,必然要用到通知栏,由于通知栏很多版本都有改动,一些厂商也做了调整,适配起来比较麻烦,能用系统自带的就用。 这里分享一下系统媒体通知栏的适配...
    99+
    2023-05-14
    Android媒体通知栏适配 Android通知栏适配
  • 使用redis实现延迟通知功能(Redis过期键通知)
    Redis 过期监听场景 业务中有类似等待一定时间之后执行某种行为的需求 , 比如 30 分钟之后关闭订单 . 网上有很多使用 Redis 过期监听的 Demo redis配置 &n...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作