-
JetPack Compose Material3的加载动画弹窗
-
介绍
- 代码示例
- 特色
- 版别环境要求
-
引进(Gradle KotlinDSL举例)
- 1. 设置库房源
- 2. 引进依赖
-
运用
- 简略运用
- 自定义显现内容
- 自定义底部显现和躲藏
- 展现一切动画
-
介绍
JetPack Compose Material3的加载动画弹窗
介绍
YangDialog是一个适合Compose Material3的弹窗UI组件,因为官方的DIalog组件功用很少,所以根据根底组件Dialog进行了修正和封装,
github地址
哔哩哔哩教程地址
代码示例
特色
- 弹窗一个带有加载动画和根本弹窗结构的UI组件,加载动画包含了常用的三个类型,一个Success显现成功的图标,Error显现错误的图标,Loading为加载中的状况,而且加载状况底部供给文本按钮给用户进行加载状况的操作。
- 虽然是一个封装过的弹窗框架,可是供给了许多自定义的部分,比如自定义背景色,内容颜色,标题颜色,底部是否显现承认或者撤销按钮等,根据google官方Material3控件特点的设置习气,运用单例来配置颜色内容等特点,遮罩的点击回调,尽可能减少过多的学习本钱。
- 弹窗的中心首要内容是供给组合函数让用户自定义展现运用的,并不会干扰弹窗的首要展现部分,可以自定义自己想显现的内容
- 一切的动画都是已经设置好的,无需过多管理,运用AnimatedVisibility完成动画的各种情况,尽可能的让体验愈加的挨近原生,而且是根据最根底的Dialog组件进行扩展,所以不会出现太多过多封装形成的功能问题。
版别环境要求
- Jetpack Compose Material3
- Gradle 8.1.0以上(主张)
- AGP 8.0.2以上(主张)
- 最小SDK 26
引进(Gradle KotlinDSL举例)
1. 设置库房源
settings.gradle.kts中设置库房源
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
maven("https://jitpack.io")//添加库房源
}
}
2. 引进依赖
APP模块下的build.gradle.kts
dependencies {
//请去库房的releases中运用最新的版别即可(主张一向最新版别当时文档版别1.0.4)
implementation("com.github.setruth:ComposeM3YangDialog:$releases")
...
}
运用
简略运用
var dialogShow by remember {
mutableStateOf(true)
}
YangDialog(
title = "这是普通弹窗",
isShow = dialogShow,//经过isShow展现或者躲藏dialog
onCancel = {//撤销选项的回调
dialogShow = false
},
//底部设置
bottomConfig = YangDialogDefaults.bottomConfig(
confirmActive = false //不激活承认选项
),
onDismissRequest = { //遮罩层点击的回调
dialogShow = false
},
) {
Text(text = "hello")
}
自定义显现内容
var dialogShow by remember {
mutableStateOf(true)
}
var inputContent by remember {
mutableStateOf("")
}
YangDialog(
title = "这是自定义内容弹窗",
isShow = dialogShow,
onCancel = {
dialogShow = false
},
onConfirm = {
dialogShow = false
},
) {
OutlinedTextField(value = inputContent, onValueChange = { inputContent = it })//自定义内容
}
自定义底部显现和躲藏
var dialogShow by remember {
mutableStateOf(true)
}
YangDialog(
title = "自定义底部选项的弹窗",
isShow = dialogShow,
onCancel = {
dialogShow = false
},
onConfirm = {
dialogShow = false
},
//经过YangDialogDefaults.bottomConfig设置底部选项的配置
bottomConfig = YangDialogDefaults.bottomConfig(
showCancel = false,
confirmTip = "承认将会封闭弹窗"
)
) {
Text(text = "hello")
}
展现一切动画
var dialogShow by remember {
mutableStateOf(true)
}
var dialogType by remember {
mutableStateOf(YangDialogLoadingType.NOT_LOADING)
}
var loadingTip by remember {
mutableStateOf("")
}
var startLoading by remember {
mutableStateOf(false)
}
LaunchedEffect(startLoading){
if (startLoading){
loadingTip="加载"
dialogType=YangDialogLoadingType.LOADING
delay(1500)
dialogType=YangDialogLoadingType.ERROR
loadingTip="失败"
delay(1500)
dialogType=YangDialogLoadingType.SUCCESS
loadingTip="成功"
}
}
YangDialog(
loadingState = dialogType,//经过改动loadingState来显现对应的动画
loadingTip = loadingTip,//加载动画下面的提示文本,为空不显现
title = "这是自定义内容弹窗",
isShow = dialogShow,
onCancel = {
dialogShow = false
dialogHide()
},
//加载动画的底部文本的点击回调,回来当时加载的状况
onLoadingTipClick = {
if (it==YangDialogLoadingType.SUCCESS) {
dialogType=YangDialogLoadingType.NOT_LOADING
}
},
onConfirm = {
startLoading=true
},
bottomConfig = YangDialogDefaults.bottomConfig(
confirmTip = "开端加载动画"
)
)