Android控件【Notification】

news2024/12/27 10:48:59

文章目录

  • Notification与NotifactionManager
    • 创建一个NotificationManager
    • 使用Builder构造器来创建Notification对象
  • NotificationChannel
    • 通知重要程度设置,NotificationManager类中
  • Notification(通知)常见方法说明
  • 注意
  • 项目结构
  • 主要代码

Notification与NotifactionManager

创建一个NotificationManager

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

使用Builder构造器来创建Notification对象

使用NotificationCompat类的Builder构造器来创建Notification对象,可以保证程序在所有的版本上都能正常工作。Android8.0新增了通知渠道这个概念,如果有设置,则通知无法在Android8.0的机器上显示

NotificationChannel

通知渠道:Android8.0引入了通知渠道,其允许您为要显示的每种通知类型创建用户可自定义的渠道

通知重要程度设置,NotificationManager类中

IMPORTANCE_NONE关闭通知
IMPORTANCE_MIN开启通知,不会弹出,但没有提示音,状态栏中无显示
IMPORTANCE_LOW开启通知,不会弹出,不发出提示音,状态栏中显示
IMPORTANCE_DEFAULT默认状态,开启通知,不会弹出,发出提示音,状态栏中显示
IMPORTANCE_HIGH开启通知,会弹出,发出提示音,状态栏中显示

Notification(通知)常见方法说明

  1. setContentTitle(String string):设置标题
  2. setContentText:设置文本内容
  3. setSmallIcon(int icon):设置小图标
  4. setLargeIcon(Bitmap icon):设置通知的大图标
  5. setColor(int argb):设置小图标的颜色
  6. setContentIntent(PendingIntent intent):设置点击通知后的跳转意图
  7. setAutoCancel(boolean flag):设置点击通知后自动清除通知
  8. setWhen(long when):设置通知被创建的时间

前三个是必须写的

注意

Android5.0系统开始,对于通知栏图标的设计进行了修改。
现在Google要求,所有应用程序的通知栏图标,应该只使用alpha图层来进行绘制,而不应该包括RGB图层。
简单来说,就是通知栏图标不能带颜色

项目结构

在这里插入图片描述

主要代码

MainActivity

package com.study.mynotification;

import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.NotificationCompat;

import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends AppCompatActivity {

    //通知管理类
    private NotificationManager manager;
    private Notification notification;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //获取NotificationManager对象
        manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

        //判断版本是否在8.0及以上
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            //创建一个NotificationChannel
            //参数说明
            //第一个参数(id):也就是notification里面的channelId,在这里需要保持一致,才有作用
            //第二个参数(name):用户点击通知的时候可以看到,一般根据公司的需求
            //第三个参数(importance):通知的重要程度
            NotificationChannel notificationChannel = new NotificationChannel("leo", "测试通知",
                    NotificationManager.IMPORTANCE_HIGH);
            //这样相当于notificationChannel的Id和下面notification的channelId形成了一个绑定关系
            manager.createNotificationChannel(notificationChannel);
        }

        //创建意图
        Intent intent = new Intent(this, NotificationActivity.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);

        //创建一个notification对象(通知)
        //channelId:渠道id
        notification = new NotificationCompat.Builder(this, "leo")
                .setContentTitle("官方通知")    //必须设置
                .setContentText("立大事者不惟有超世之才,亦必有坚韧不拔之志") //必须设置
                .setSmallIcon(R.drawable.baseline_person_24)     //设置小图标,必须设置
                .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.two))//设置大图标
                .setColor(Color.parseColor("#ff0000"))  //设置小图标颜色
                .setContentIntent(pendingIntent)    //点击通知后的跳转意图
                .setAutoCancel(true)    //点击后自动清楚通知
                .build();
    }

    public void sendNotification(View view) {
        //发送通知
        manager.notify(1, notification);
    }

    public void cacelNotification(View view) {
        manager.cancel(1);
    }
}

NotificationActivity

package com.study.mynotification;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

import androidx.annotation.Nullable;

public class NotificationActivity extends Activity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Log.e("leo", "onCreate: 进入NotificationActivity");
    }
}

activity_main.xml

<?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">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="发出通知"
        android:onClick="sendNotification"/>

    <Button
        android:onClick="cacelNotification"
        android:text="取消通知"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />


</LinearLayout>

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">

    <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.StudyApp">
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="com.study.mynotification.NotificationActivity" />
    </application>

</manifest>

tow.jpg
在这里插入图片描述

baseline_person_24.xml

<vector android:height="24dp" android:tint="#0A0A0A"
    android:viewportHeight="24" android:viewportWidth="24"
    android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
    <path android:fillColor="@android:color/white" android:pathData="M12,12c2.21,0 4,-1.79 4,-4s-1.79,-4 -4,-4 -4,1.79 -4,4 1.79,4 4,4zM12,14c-2.67,0 -8,1.34 -8,4v2h16v-2c0,-2.66 -5.33,-4 -8,-4z"/>
</vector>

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/880354.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

国产DSP,经典之作,C2000,QX320F280049

特性&#xff1a; 1、替代TI 的 TMS320F280049 2、独立双核&#xff0c;主频400MHz 3、单精度浮点运算&#xff0c;三角函数运算 4、Flash 1MB&#xff0c;SRAM 1MB 5、12bit ADC&#xff0c;采样率 3.45MSPS 6、16个高分辨率 ePWM 优点&#xff1a; 1、主频400MHz&#xff0c…

clion2020.3配置clang-format

标题clion 启用clang-format 文件->设置->编辑器->代码样式. 为了保持原有代码风格不变&#xff0c;可以把原始的配置风格先导出&#xff0c;最好直接保存到自己的工程下&#xff0c;.clang-format是隐藏文件&#xff0c;需要用ctrlH才能看到 文件->设置->编辑…

i++和++i在操作数栈和局部变量表的分配

1、执行运算指令时&#xff0c;压入操作数栈的顺序不受运算优先级影响 2、i 先将i值压入到操作数栈&#xff0c;再在局部变量表自增 3、i 先在局部变量表自增&#xff0c;再压入到操作数栈 记忆方法&#xff1a;i的先后&#xff0c;表示压入操作数栈的先后。 看如下例子&am…

从零实战SLAM-第七课(多视角几何)

在七月算法报的班&#xff0c;老师讲的蛮好。好记性不如烂笔头&#xff0c;关键内容还是记录一下吧&#xff0c;课程入口&#xff0c;感兴趣的同学可以学习一下。 --------------------------------------------------------------------------------------------------------…

Centos7 开机时遇到initramfs-xxx.img not found错误导致虚拟机无法开启问题处理

1、背景 一台运行在Esxi上面的VM重启后报initramfs-xxx.img not found错误。 按任意键后出现以下错误。 之前在运维Centos7的时候解决过Kernel panic - not syncing : VFS: Unable to mount root fs on unknown-block(0.0)错误&#xff0c;以为按照之前的解决方案&#xff0c;…

【删除vlan的方法】

提示错误 [SW1]undo vlan 10 Error: The VLAN has a L3 interface. Please delete it first. 解决办法 undo interface Vlanif10 #删除vlan 10下的接口 [SW1-GigabitEthernet0/0/1]dis this #删除下列的IP

vue3+ts使用antv/x6 + 自定义节点

使用 2.x 版本 x6.antv 新官网: 安装 npm install antv/x6 //"antv/x6": "^2.1.6",项目结构 1、初始化画布 index.vue <template><div id"container"></div> </template><script setup langts> import { onM…

从鲁大师十五年,寻找软件的生存法则

千禧之年&#xff0c;国内互联网用户数量首次突破1000万大关&#xff0c;互联网的腾飞正式拉开序幕。 从彼时算起&#xff0c;中国互联网发展也不过23年&#xff0c;而我们记忆中那个摇着蒲扇的老头&#xff0c;却占据了其中关键的十五年。 这十五年中有太多曾经为人熟知的软件…

超强的Everything,吊打系统自带文件搜索功能!

目录 一、软件简介 二、软件下载 三、软件说明 一、软件简介 Everything是一款由David OReilly开发的电脑搜索软件&#xff0c;它可以帮助用户快速找到电脑上的文件和文件夹。与其他搜索工具不同的是&#xff0c;Everything使用了一种非常快速和高效的搜索算法&#xff0c…

小视频AI智能分析系统解决方案

2022下半年一个项目&#xff0c;我司研发一个基于接收小视频录像文件和图片进行算法分析抓拍的系统&#xff0c;整理了一下主要思想如下&#xff1a; 采用C开发一个AI识别服务&#xff0c;该服务具有如下功能: 创建各类算法模型服务引擎池&#xff0c;每类池内可加载多个模型…

vue自定义指令--动态参数绑定

在企业微信侧边栏应用中&#xff0c;给dialog添加了拖拽功能&#xff0c;但是因为dialog高度超过了页面高度&#xff0c;所以高度100%时拖拽有个bug--自动贴到窗口顶部而且企业侧边栏宽高都有限制&#xff0c;拖拽效果并不理想&#xff0c;所以就想缩小dialog再进行拖拽。 拖拽…

全网最新超详细的C盘扩容(2023年),比如把D盘内存分给C盘

文章目录 1. 引入问题2. 磁盘分区3. 磁盘扩容4. 使用DiskGenius的注意事项 1. 引入问题 今天打开电脑&#xff0c;发现C盘爆红&#xff0c;如下图所示&#xff1a; 此时&#xff0c;我就知道需要扩容。 2. 磁盘分区 我们在扩容C盘的前提&#xff0c;需要寻找其他可用空间较多…

金蝶软件实现Excel数据复制分录信息粘贴到单据体分录行中

>>>适合KIS云专业版V16.0|KIS云旗舰版V7.0|K/3 WISE 14.0等版本<<< 实现Excel数据复制分录信息粘贴到金蝶单据体分录中,在采购订单|采购入库单|销售订单|销售出库单等类型单据中,以少量的必要字段在excel表格中按模板填列好,很方便快捷地复制到金蝶单据表体…

导出微信好友,批量加好友、导出微信群员信息

下面的代码基于千寻框架&#xff0c;都测试过了&#xff0c;都能正常使用。 需要项目代码或者千寻框架的可以加我V&#xff1a;iostreamX64 注意&#xff1a;批量加好友的时候记得设置个时间间隔&#xff0c;加好友太频繁微信会被封的。 导出微信群员信息 import pandas as…

各行业全网营销大揭秘:电商、快消品、汽车如何在数字化时代脱颖而出?

随着数字化时代的到来&#xff0c;全网营销已经成为了许多企业的首选营销方式。全网营销具有成本低、覆盖面广、互动性好等优点&#xff0c;能够帮助企业提升品牌认知度和销售额。然而&#xff0c;不同的行业在进行全网营销时&#xff0c;需要采用不同的营销策略。本文一秒推小…

item_get_desc-获得淘宝商品描述

一、接口参数说明&#xff1a; item_get_desc-获得淘宝商品描述&#xff0c;点击更多API调试&#xff0c;请移步注册API账号点击获取测试key和secret 公共参数 请求地址: https://api-gw.onebound.cn/taobao/item_get_desc 名称类型必须描述keyString是调用key&#xff08;点…

【node】用node爬取网页图片,并创建目录 将爬取的图片存储到目录中,附带源码

效果图&#xff1a; 完整代码&#xff1a; var myRequest require(request) var myCheerio require(cheerio) const http require(http); const fs require(fs);// 要爬取的目标网页地址 var myURL https://588ku.com/sheyingtu/0-0-default-0-1/// 目标文件夹路径 const…

yolov8训练进阶:自定义训练脚本,从配置文件载入训练超参数

yolov8官方教程提供了2种训练方式&#xff0c;一种是通过命令行启动训练&#xff0c;一种是通过写代码启动。 命令行的方式启动方便&#xff0c;通过传入参数可以方便的调整训练参数&#xff0c;但这种方式不方便记录训练参数和调试训练代码。 自行写训练代码的方式更灵活&am…

0基础学习VR全景平台篇 第84篇:智慧眼-权限如何设置?

一、功能说明 指智慧眼项目在运行的整个过程中&#xff0c;相关成员所需要用到的一系列操作权利&#xff1a;如提交&#xff08;问题&#xff09;、审核、整治、驳回、撤销、成员管理、查看数据、导出数据等等&#xff0c;这些都可以称为权限。权限需要通过后台先创建出来&…

item_get_sales-获取TB商品销量详情

一、接口参数说明&#xff1a; item_get_sales-获取商品销量详情&#xff0c;点击更多API调试&#xff0c;请移步注册API账号点击获取测试key和secret 公共参数 请求地址: https://api-gw.onebound.cn/taobao/item_get_sales 名称类型必须描述keyString是调用key&#xff08…