廢話不多說直接上代碼
class WelcomeActivity : RxAppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MaterialTheme {
Scaffold {
Column {
Box(modifier = Modifier.weight(1f)) {
WelcomeImage()
WelcomeHeader()
}
WelcomeAppInfo()
// 這里就是你們要的對話框調(diào)用
ProtocolDialog()
}
}
}
}
}
/**
* 用戶協(xié)議對話框
*/
@Composable
fun ProtocolDialog() {
// 這里需要根據(jù)實(shí)際情況獲取保存在sharedPreference里面的值來決定是否展示對話框
val openDialog = remember { mutableStateOf(true) }
if (!openDialog.value) { // 如果已經(jīng)展示過了那么跳過
return
}
// 定義一個map 用來和 appendInlineContent 設(shè)置的內(nèi)容進(jìn)行替換, 這里替換了 "《用戶協(xié)議》" 和 "《隱私政策》" 為可點(diǎn)擊的內(nèi)容
val inlineContent = mapOf(Pair("protocol",
InlineTextContent(Placeholder(width = 6.em,
height = 1.5.em,
placeholderVerticalAlign = PlaceholderVerticalAlign.Center)) {
Box(modifier = Modifier
.fillMaxSize()
.clickable {
// 這里跳轉(zhuǎn)到用戶協(xié)議頁面
},
contentAlignment = Alignment.Center) {
Text(text = "《用戶協(xié)議》", style = TextStyle(color = Color.Red))
}
}),
Pair("policy",
InlineTextContent(Placeholder(width = 6.em,
height = 1.5.em,
placeholderVerticalAlign = PlaceholderVerticalAlign.Center)) {
Box(modifier = Modifier
.fillMaxSize()
.clickable {
// 這里跳轉(zhuǎn)到隱私政策頁面
},
contentAlignment = Alignment.Center) {
Text(text = "《隱私政策》", style = TextStyle(color = Color.Red))
}
}))
val annotatedString = buildAnnotatedString {
append("用戶協(xié)議和隱私政策請你務(wù)必審慎閱讀、充分理解\"用戶協(xié)議”和\"隱私政策”各條款,\n包括但不限于:為了向你提供即時通訊、內(nèi)容分享等服務(wù),我們需要收集你的設(shè)備信息、操作日志等個人信息。你可以在“設(shè)置\"中查看、變更、刪除個人信息并管理你的授權(quán)。\n你可閱讀")
// 這里的內(nèi)容("《用戶協(xié)議》"字符串--這個字符串隨便定義即可)將被 inlineContent 里 key 為 protocol 的 內(nèi)容替換, 以實(shí)現(xiàn)點(diǎn)擊功能
appendInlineContent("protocol", "《用戶協(xié)議》")
pushStyle(SpanStyle(color = Color.Red, fontSize = 14.sp, fontStyle = FontStyle.Italic))
append("和")
pop()
// 這里的內(nèi)容("《隱私政策》"字符串--這個字符串隨便定義即可)將被 inlineContent 里 key 為 policy 的 內(nèi)容替換, 以實(shí)現(xiàn)點(diǎn)擊功能
appendInlineContent("policy", "《隱私政策》")
append("了解詳細(xì)信息。如你同意,請點(diǎn)擊“同意”開始接受我們的服務(wù)。")
}
AlertDialog(
onDismissRequest = {},
title = { Text(text = "溫馨提示") },
text = { Text(annotatedString, inlineContent = inlineContent) },
confirmButton = {
TextButton(onClick = {
openDialog.value = false
// 保存一個狀態(tài) 下次不加載對話框, 這個狀態(tài)在這個方法第一行代碼中用到 ( val openDialog = remember { mutableStateOf(保存的狀態(tài)) })
// 跳轉(zhuǎn)到應(yīng)用內(nèi)頁面
}) { Text("同意") }
},
dismissButton = {
TextButton(onClick = {
openDialog.value = false
// 退出應(yīng)用
}) { Text("暫不使用") }
})
}
}