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

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

调用无效,仅影响 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 低版本会崩溃

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

崩溃,但设置位置生效

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

异常log

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

API 29 源码

API 29 中调用 setText() 方法时要保证 mNextView 不为空,而 mNextView 是调用 setView 赋值的

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

API 29 setView 源码

最后

这里我希望可以帮助到大家提升进阶。

内容包含:Android学习PDF+架构视频+面试文档+源码笔记高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 这几块的内容。非常适合近期有面试和想在技术道路上继续精进的朋友。

喜欢本文的话,不妨给我点个小赞、评论区留言或者转发支持一下呗~

img
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!
1ZjRkYmEw?x-oss-process=image/format,png)
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!

  • 18
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值