Android 11 下 Toast 变化,不能自定义 Toast 了?

text toast 不允许自定义

默认的 toast 是 text toast,如果想使用自定义的 toast ,需要调用 setView() 方法

在 targetSdkVersion 为 R 或更高时,调用 setGravity 和 setMargin 方法将不进行任何操作

官方文档中所述的 Android R 仅影响 「text toast」 ,而自定义的 toast 不受影响

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

调用无效,仅影响 text toast

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

调用无效,仅影响 text toast

如图,在 text toast 中调用 setGravity 和 setMargin 方法,但 toast 位置并未居中

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在 text toast 中调用 setGravity 和 setMargin 方法

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

并未居中,方法不生效

setView() 被弃用

setView() 方法被标记弃用

「Deprecated」 表示该功能目前仍可以使用,但可能会在将来的 Android 版本中删除。 建议开发人员避免长期使用此功能

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

setView 被弃用

可以看到,官方在一步步禁止自定义 Toast

目前是 targetSdkVersion 为 R 或更高的 app 禁止后台弹出自定义 Toast

同时将 setView() 方法标记弃用,当该方法从源码中移除后,自定 Toast 的方式将被彻底消灭

当然,官方提供了相应的替代品,使用 Snackbar

新增 Toast.Callback 回调

添加了新的回调(Toast.Callback),以通知 Toast 显示和隐藏。 可以通过以下方法轻松将其添加到 Toast 中:

val toast = Toast.makeText(this, R.string.simple2_toast, Toast.LENGTH_SHORT) toast.addCallback(object : Toast.Callback() { override fun onToastShown() { super.onToastShown() Log.d(TAG, "onToastShown") } override fun onToastHidden() { super.onToastHidden() Log.d(TAG, "onToastHidden") } }) toast.show()

一些小 tips 及 demo

demo 在这 ,切换 Flavor 即可指定不同的 targetSdkVersion

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

切换 Flavor

在写 demo 时遇到一些小问题

tip1

Handler() 无参构造方法和 Handler(Handler.Callback) 构造方法 被弃用了

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

无参构造器被弃用

简单来讲就是在初始化 Handler 时要显示的配置 Looper

Handler 使用不当会有这样一种 bug,例如在子线程通过无参构造函数创建 Handler,您可能会看到这样的异常

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

错误日志

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

抛出异常源码

详细内容这里就不讲了,这是 Android 开发者的必备知识

官方通过强制使用传入 Looper 的 Handler 构造器来避免使用中的问题

tip2

过去使用 Toast 构造器创建 Toast 对象 并调用 setText 方法会崩溃,targetSdkVersion 为 R 时不会崩溃

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

相同的代码 targetSdkVersion 低版本会崩溃

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

尾声

面试成功其实都是必然发生的事情,因为在此之前我做足了充分的准备工作,不单单是纯粹的刷题,更多的还会去刷一些Android核心架构进阶知识点,比如:JVM、高并发、多线程、缓存、热修复设计、插件化框架解读、组件化框架设计、图片加载框架、网络、设计模式、设计思想与代码质量优化、程序性能优化、开发效率优化、设计模式、负载均衡、算法、数据结构、高级UI晋升、Framework内核解析、Android组件内核等。

不仅有学习文档,视频+笔记提高学习效率,还能稳固你的知识,形成良好的系统的知识体系。这里,笔者分享一份从架构哲学的层面来剖析的视频及资料分享给大家梳理了多年的架构经验,筹备近6个月最新录制的,相信这份视频能给你带来不一样的启发、收获。

Android进阶学习资料库

一共十个专题,包括了Android进阶所有学习资料,Android进阶视频,Flutter,java基础,kotlin,NDK模块,计算机网络,数据结构与算法,微信小程序,面试题解析,framework源码!

image

大厂面试真题

PS:之前因为秋招收集的二十套一二线互联网公司Android面试真题 (含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)

《2017-2021字节跳动Android面试历年真题解析》

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

题解析》**

[外链图片转存中…(img-9dP7rJCn-1712606441432)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值