Toaster - Android 吐司框架,专治 Toast 各种疑难杂症
官网
https://github.com/getActivity/Toaster
这可能是性能优、使用简单,支持自定义,不需要通知栏权限的吐司
- 想了解实现原理的可以点击此链接查看:Toaster 源码

集成步骤
- 如果你的项目 Gradle 配置是在 7.0 以下,需要在 build.gradle 文件中加入
allprojects {repositories {// JitPack 远程仓库:https://jitpack.iomaven { url 'https://jitpack.io' }}
}
- 如果你的 Gradle 配置是 7.0 及以上,则需要在 settings.gradle 文件中加入
dependencyResolutionManagement {repositories {// JitPack 远程仓库:https://jitpack.iomaven { url 'https://jitpack.io' }}
- 配置完远程仓库后,在项目 app 模块下的 build.gradle 文件中加入远程依赖
android {// 支持 JDK 1.8compileOptions {targetCompatibility JavaVersion.VERSION_1_8sourceCompatibility JavaVersion.VERSION_1_8}
}dependencies {// 吐司框架:https://github.com/getActivity/Toasterimplementation 'com.github.getActivity:Toaster:12.0'
}
初始化框架
public class XxxApplication extends Application {@Overridepublic void onCreate() {super.onCreate();// 初始化 Toast 框架Toaster.init(this);}
}
框架 API 介绍
// 显示 Toast
Toaster.show(CharSequence text);
Toaster.show(int id);
Toaster.show(Object object);// debug 模式下显示 Toast
Toaster.debugShow(CharSequence text);
Toaster.debugShow(int id);
Toaster.debugShow(Object object);// 延迟显示 Toast
Toaster.delayedShow(CharSequence text, long delayMillis);
Toaster.delayedShow(int id, long delayMillis);
Toaster.delayedShow(Object object, long delayMillis);// 显示短 Toast
Toaster.showShort(CharSequence text);
Toaster.showShort(int id);
Toaster.showShort(Object object);// 显示长 Toast
Toaster.showLong(CharSequence text);
Toaster.showLong(int id);
Toaster.showLong(Object object);// 自定义显示 Toast
Toaster.show(ToastParams params);// 取消 Toast
Toaster.cancel();// 设置 Toast 布局(全局生效)
Toaster.setView(int id);// 设置 Toast 样式(全局生效)
Toaster.setStyle(IToastStyle<?> style);
// 获取 Toast 样式
Toaster.getStyle()// 判断当前框架是否已经初始化
Toaster.isInit();// 设置 Toast 策略(全局生效)
Toaster.setStrategy(IToastStrategy strategy);
// 获取 Toast 策略
Toaster.getStrategy();// 设置 Toast 重心和偏移
Toaster.setGravity(int gravity);
Toaster.setGravity(int gravity, int xOffset, int yOffset);// 设置 Toast 拦截器(全局生效)
Toaster.setInterceptor(IToastInterceptor interceptor);
// 获取 Toast 拦截器
Toaster.getInterceptor();
框架亮点
- 一马当先:首款适配 Android 11 的吐司框架,开发者无需关心适配过程
- 无需权限:不管有没有授予通知栏权限都不影响吐司的弹出
- 兼容性强:处理原生 Toast 在 Android 7.1 产生崩溃的历史遗留问题
- 功能强大:不分主次线程都可以弹出Toast,自动识别资源 id 和 int 类型
- 使用简单:只需传入文本,会自动根据文本长度决定吐司显示的时长
- 性能最佳:使用懒加载模式,只在显示时创建 Toast,不占用 Application 启动时间
- 体验最佳:显示下一个 Toast 会取消上一个 Toast 的显示,真正做到即显即示
- 全局统一:可以在 Application 中初始化 Toast 样式,达到一劳永逸的效果
关于通知栏权限
- 本框架已经完美解决这个问题,(请以Demo测试为主)
- 具体解决方案可见:Toast通知栏权限填坑指南
相关文章:
Toaster - Android 吐司框架,专治 Toast 各种疑难杂症
官网 https://github.com/getActivity/Toaster 这可能是性能优、使用简单,支持自定义,不需要通知栏权限的吐司 想了解实现原理的可以点击此链接查看:Toaster 源码 集成步骤 如果你的项目 Gradle 配置是在 7.0 以下,需要在 bui…...
2023年9月26日,历史上的今天大事件早读
1620年9月26日大明皇帝朱常洛驾崩 1815年9月26日俄、普、奥三国在巴黎发表缔结“神圣同盟” 1841年9月26日清代思想家、诗人龚自珍逝世 1849年9月26日“生理学之父”巴甫洛夫诞生 1909年9月26日云南陆军讲武堂创办 1953年9月26日画家徐悲鸿逝世 1980年9月26日国际宇航联合…...
CListCtrl控件为只显示一列,持滚动显示其他,不用SetScrollFlags
CListCtrl控件为只显示一列,持滚动显示其他,不用SetScrollFlags 2023/9/5 下午4:52:58 如果您不希望使用 SetScrollFlags 函数来设置滚动条样式,可以使用以下代码将 CListCtrl 控件设置为只显示一列,并支持滚动显示其他内容: cpp // 设置控件样式和属性 m_listCtrl.Se…...
spring博客实现分页查询
1、首先创建dto下的分页类PageBean package com.zzz.blog.dto;import java.util.List;public class PageBean {private Integer pageSize; //页面大小private Integer currentPage; //当前页private Integer totalCount; //总条数private Integer totalPage; //总页数private …...
代码阅读分析神器-Scitools Understand
这里写目录标题 前言概要功能介绍1.代码统计2.图形化分析3.代码检查 使用方法下载及使用 前言 作为一名程序员,阅读代码是一个必须要拥有的能力,但无奈很多代码逻辑嵌套非常多,看起来非常吃力,看了那段逻辑就忘记了刚才的逻辑&am…...
学霸吐血整理‼《2023 年 IC 验证岗面试真题解析》宝藏干货!
Q1.定宽数组、动态数组、关联数组、队列各自的特点和使用方式。 Q2.fork…join/fork…join_any/fork…join_none 之间的异同 Q3.mailbox、event、semaphore 之间的异同 Q4.(event_handle)和 wait(event_handle.triggered)区别 Q5.task 和 function 异同区别 Q6.使用 clocking b…...
稳定性、可靠性、可用性、灵活性、解耦性
稳定性 平衡的能力 Linux系统的OOM机制、tcp的拥塞控制 可靠性 确定的能力 tcp的ACK、HA机制、加密 可用性 复原的能力 负债均衡、tcp的重传、冗余机制、故障域 灵活性 界限的能力 用户态、restful api、IP地址掩码 解耦性 不依赖的能力 分布式、SDN、容器、操作…...
docker搭建Redis三主三从
docker搭建Redis三主三从 首先启动6个redis进入容器构建主从关系连接进入6381作为切入点,查看集群状态 首先启动6个redis [rootdocker redis-node-1]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 …...
亚马逊要求的UL报告的产品标准是什么?如何区分
亚马逊为什么要求电子产品有UL检测报告? 首先,美国是一个对安全要求非常严格的国家,美国本土的所有电子产品生产企业早在很多年前就要求有相关安规检测。 其次,随着亚马逊在全球商业的战略地位不断提高,境外的电子设…...
如何在linux定时备份opengauss数据库(linux核心至少在GLIBC_2.34及以上)
前提环境,linux的核心至少在GLIBC_2.34及以上才能使用。 查看linux的glibc版本的命令如下 strings /lib64/libc.so.6 | grep GLIBC 如下图 或者用ldd --version 如下图 在官网下载对应的依赖包, 只需要这个lib文件即可,将这个包放在lin…...
SkyWalking快速上手(七)——Skywalking UI 界面简介
文章目录 前言1. 仪表盘1.1 指标展示1.2 自定义仪表盘 2. 拓扑图2.1 节点展示2.2 连接展示 3. 追踪3.1 请求链路3.2 请求详情 4. 性能剖析4.1 方法级别性能分析4.2 代码级别性能分析 5. 告警5.1 告警规则设置5.2 告警通知 6. 日志记录6.1 日志展示6.2日志分析6.3代码示例 总结 …...
python+vue驾校驾驶理论考试模拟系统
管理员的主要功能有: 1.管理员输入账户登陆后台 2.个人中心:管理员修改密码和账户信息 3.用户管理:管理员可以对用户信息进行添加,修改,删除,查询 4.添加选择题:管理员可以添加选择题目…...
go-redis 框架基本使用
文章目录 redis使用场景下载框架和连接redis1. 安装go-redis2. 连接redis 字符串操作有序集合操作流水线事务1. 普通事务2. Watch redis使用场景 缓存系统,减轻主数据库(MySQL)的压力。计数场景,比如微博、抖音中的关注数和粉丝数…...
java内嵌浏览器CEF-JAVA、jcef、java chrome
java内嵌浏览器CEF-JAVA、jcef、java chrome jcef是老牌cef的chrome内嵌方案,可以进行java-chrome-h5-桌面开发,下面为最新版本(2023年9月22日10:33:07) JCEF(Java Chromium Embedded Framework)是一个基于…...
string类模拟实现——C++
一、构造与析构 1.构造函数 构造函数需要尽可能将成员在初始化列表中初始化,string类的成员这里自定义的和顺序表相似,有_str , _size , _capacity , 以及一个静态成员 npos ,构造函数这里实现两种,一种是传参为常量字符串的&am…...
在 SQL Server 中,可以使用加号运算符(+)来拼接字符串。但是,如果需要拼接多个字符串或表中的字段,就需要使用内置的拼接函数了
以下是 SQL Server 中的一些内置拼接函数: 1. CONCAT:将两个或多个字符串拼接在一起。语法为: CONCAT (string1, string2, ...)示例: SELECT CONCAT(Hello, , World) as combined_string;输出结果为:Hello World&a…...
蓝桥杯每日一题2023.9.25
4406. 积木画 - AcWing题库 题目描述 分析 在完成此问题前可以先引入一个新的问题 291. 蒙德里安的梦想 - AcWing题库 我们发现16的二进制是 10000 15的二进制是1111 故刚好我们可以从0枚举到1 << n(相当于二的n次方的二进制表示) 注:奇数个0…...
前端面试的话术集锦第 20 篇博文——高频考点(输入 URL 到页面渲染的整个流程)
这是记录前端面试的话术集锦第二十篇博文——高频考点(输入 URL 到页面渲染的整个流程),我会不断更新该博文。❗❗❗ 借用这道经典面试题,将之前学习到的浏览器以及网络几章节的知识联系起来。 首先是DNS查询,如果这一步做了智能DNS解析的话,会提供访问速度最快的IP地址…...
Android Jetpack Compose之确定重组范围并优化重组
目录 1.概述2.确定Composable重组的范围3.优化重组的性能3.1 Composable 位置索引3.2 通过Key添加索引信息3.3 使用注解Stable优化重组 1.概述 前面的文章提到Compose的重组是智能的,Composable函数在进行重组时会尽可能的跳过不必要的重组,只对需要变化…...
【JDK 8-集合框架进阶】6.1 parallelStream 并行流
一、parallelStream 并行流 1.1 串行 和 并行的区别 > 执行结果 二、问题 2.1 paralleStream 并行是否一定比 Stream 串行快? 2.2 是否可以都用并行? > 报错 三、实战 > 执行结果 四、总结 一、parallelStream 并行流 多线程并发处理ÿ…...
GLM-4.6V-Flash-WEB新手入门:从镜像加速到网页推理实战
GLM-4.6V-Flash-WEB新手入门:从镜像加速到网页推理实战 1. 为什么选择GLM-4.6V-Flash-WEB 智谱AI最新开源的GLM-4.6V-Flash-WEB是一款专为实际业务场景优化的多模态视觉大模型。它结合了视觉理解和语言生成能力,特别适合需要快速部署的Web应用场景。 …...
矩阵分解(1)-- 从高斯消元到对称正定:LU、LDLT与Cholesky分解的算法演进与应用场景
1. 矩阵分解:为什么我们需要它? 想象一下你面前有一堆积木,乱七八糟地堆在一起。如果你想快速找到其中某一块积木,可能需要翻找很久。但如果有人帮你把这些积木按照颜色、形状分类摆放整齐,找起来就会容易得多。矩阵分…...
车载Android Auto兼容性开发全链路(车规级Java SDK集成手册)
第一章:车载Android Auto兼容性开发全链路概览Android Auto 是 Google 提供的车载信息娱乐系统集成框架,其兼容性开发并非仅限于应用层适配,而是一条横跨设备端、车机系统、认证流程与用户交互的完整技术链路。开发者需同步关注 Android 应用…...
【C语言】memmove()函数实战:如何安全高效地处理内存重叠拷贝
1. 为什么需要memmove()函数? 在C语言中处理内存拷贝时,我们经常会遇到一个棘手的问题:当源内存块和目标内存块存在重叠区域时,使用memcpy()函数可能会导致数据被意外覆盖。想象一下你在整理书架,想把第三层到第五层的…...
【Matlab】MATLAB教程:图形句柄;案例:h=plot(x,y);应用:控制图形属性
MATLAB教程:图形句柄;案例:h=plot(x,y);应用:控制图形属性 在MATLAB数据可视化、实验报告绘图、工程结果展示等场景中,仅仅通过plot函数绘制基础图形远远不够。实际科研与工程应用中,往往需要精准调整图形的线条样式、颜色、标记点、坐标轴、图例等属性,让图形更清晰、…...
RK3568上Qt5.12.8编译eglfs报错?手把手教你解决fbdev_window.h缺失问题
RK3568 Qt5.12.8编译eglfs报错全解析:从fbdev_window.h缺失到完整解决方案 在嵌入式开发领域,RK3568作为Rockchip推出的高性能处理器,结合Qt框架的图形界面开发能力,为工业控制、智能终端等场景提供了强大的解决方案。然而&#…...
3分钟搞定Windows和Office激活:KMS_VL_ALL_AIO智能脚本使用指南
3分钟搞定Windows和Office激活:KMS_VL_ALL_AIO智能脚本使用指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为系统激活烦恼吗?Windows提示许可证过期,…...
别再死记API了!用FreeRTOS消息队列的底层逻辑,彻底搞懂信号量、互斥锁和队列集
FreeRTOS同步机制的解密:从消息队列到信号量的统一视角 在嵌入式开发中,任务间的同步与通信是构建可靠系统的核心挑战。FreeRTOS作为广泛应用的实时操作系统,提供了丰富的同步机制——消息队列、信号量、互斥锁等。然而,许多开发者…...
跨平台开源工具WorkshopDL:游戏玩家的资源获取终极解决方案
跨平台开源工具WorkshopDL:游戏玩家的资源获取终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 在游戏玩家的数字生活中,创意模组是拓展游戏…...
【实验原理深度解析】弗兰克-赫兹实验:如何用电子“碰撞”揭示原子能级的秘密
1. 电子与原子的"对话":弗兰克-赫兹实验的设计哲学 想象你站在一个漆黑的房间里,向对面墙壁投掷网球。如果墙壁是实心的,球会直接弹回;但如果墙上有一排高度不同的窗口,球只有达到特定速度才能穿过对应高度的…...
