Android Compose 实现类似 Ant design message 的自定义 Toast

332 阅读1分钟

toast.gif

实现类似 antd message 效果的 Toast 组件

目标:

  1. 提供一个 Toast 单例可以像系统自带的 Toast.makeText 一样可以在任意地方使用
  2. ui 内容可用 composable 函数完全自定义

原理: 使用 AndroidViewModel 可以实现 Toast 单例在任意地方调用

AndroidViewModel 是什么? 来自 GPT 的答案

问:AndroidViewModel 是什么? 是否可以用来实现自定义 Toast 并全局单例调用?

AndroidViewModel 是 Android Jetpack 提供的一个 ViewModel 子类,它比普通的 ViewModel 多了一个能力:**可以访问 Application 上下文**。

它适用于你需要访问 Context 的地方,例如:

-   读取资源文件
-   调用 Toast、Clipboard、文件、SharedPreferences
-   依赖注入时需要 context

GPT 提供的简单代码示例

image.png

image.png

完整代码如下包含自定义 ui 动画等 github.com/LeiYao123/C…

同理:像一些需要高度自定义的 Drawer、Modal 组件也可以才这种方案进行定制,因为 Material Design3 的自带的组件使用起来限制太多了而且许多功能不支持,代码 github.com/LeiYao123/C…