From e5d40cc03308ad19c489d96e657ba8edb2905295 Mon Sep 17 00:00:00 2001 From: hirrao Date: Fri, 13 Jun 2025 16:31:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=901?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/hirrao/appktp/display/Dialogs.kt | 7 +-- .../hirrao/appktp/display/DisplayColumn.kt | 60 +++++++++++++++++++ .../com/hirrao/appktp/display/InputField.kt | 31 ++++++++-- .../hirrao/appktp/enums/DialogDisplayEnums.kt | 2 +- .../java/com/hirrao/appktp/theme/Color.kt | 2 + app/src/main/res/values-zh-rCN/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + gradle/libs.versions.toml | 12 ++-- 8 files changed, 101 insertions(+), 15 deletions(-) create mode 100644 app/src/main/java/com/hirrao/appktp/display/DisplayColumn.kt diff --git a/app/src/main/java/com/hirrao/appktp/display/Dialogs.kt b/app/src/main/java/com/hirrao/appktp/display/Dialogs.kt index 5321dba..0dcaaf8 100644 --- a/app/src/main/java/com/hirrao/appktp/display/Dialogs.kt +++ b/app/src/main/java/com/hirrao/appktp/display/Dialogs.kt @@ -22,7 +22,7 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.LocalConfiguration +import androidx.compose.ui.platform.LocalWindowInfo import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.TextStyle import androidx.compose.ui.tooling.preview.Preview @@ -164,9 +164,8 @@ fun CommonDialog( text: @Composable () -> Unit, buttons: @Composable () -> Unit, ) { - val configuration = LocalConfiguration.current - val screenHeight = configuration.screenHeightDp.dp - val dialogHeight = screenHeight * 0.3f + val windowSize = LocalWindowInfo.current.containerSize + val dialogHeight = windowSize.height.dp * 0.3f BasicAlertDialog( onDismissRequest = onDismissRequest, modifier = Modifier diff --git a/app/src/main/java/com/hirrao/appktp/display/DisplayColumn.kt b/app/src/main/java/com/hirrao/appktp/display/DisplayColumn.kt new file mode 100644 index 0000000..97ff928 --- /dev/null +++ b/app/src/main/java/com/hirrao/appktp/display/DisplayColumn.kt @@ -0,0 +1,60 @@ +package com.hirrao.appktp.display + +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.hirrao.appktp.App.Companion.userDao +import com.hirrao.appktp.R +import com.hirrao.appktp.data.User +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch + +@Preview +@Composable +fun DisplayColumn() { + var items by remember { mutableStateOf(List(0) { User(0, "", 0, 0.0) }) } + CoroutineScope(Dispatchers.IO).launch { + items = try { + userDao.getAll() + } catch (_: Exception) { + emptyList() + } + } + Surface( + modifier = Modifier, + shape = RoundedCornerShape(8.dp), + ) { + LazyColumn(modifier = Modifier.padding(8.dp)) { + item { + Row { + Text(stringResource(R.string.id_name), modifier = Modifier.weight(1f)) + Text(stringResource(R.string.name_name), modifier = Modifier.weight(1f)) + Text(stringResource(R.string.age_name), modifier = Modifier.weight(1f)) + Text(stringResource(R.string.height_name), modifier = Modifier.weight(1f)) + } + } + items(items) { item -> + Row { + Text(item.id.toString(), modifier = Modifier.weight(1f)) + Text(item.name, modifier = Modifier.weight(1f)) + Text(item.age.toString(), modifier = Modifier.weight(1f)) + Text(item.height.toString(), modifier = Modifier.weight(1f)) + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hirrao/appktp/display/InputField.kt b/app/src/main/java/com/hirrao/appktp/display/InputField.kt index 0474879..0273c5c 100644 --- a/app/src/main/java/com/hirrao/appktp/display/InputField.kt +++ b/app/src/main/java/com/hirrao/appktp/display/InputField.kt @@ -3,6 +3,7 @@ package com.hirrao.appktp.display import android.content.res.Configuration.UI_MODE_NIGHT_NO import android.content.res.Configuration.UI_MODE_NIGHT_YES import android.content.res.Configuration.UI_MODE_TYPE_NORMAL +import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row @@ -11,7 +12,9 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.wrapContentWidth +import androidx.compose.material3.BasicAlertDialog import androidx.compose.material3.Button +import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Text import androidx.compose.material3.TextField import androidx.compose.runtime.Composable @@ -36,7 +39,9 @@ import com.hirrao.appktp.R import com.hirrao.appktp.data.User import com.hirrao.appktp.enums.DialogDisplayEnums import com.hirrao.appktp.theme.Red40 +import com.hirrao.appktp.theme.White +@OptIn(ExperimentalMaterial3Api::class) @Preview( name = "Main-Preview-zhCN-dark", widthDp = 360, @@ -70,7 +75,13 @@ fun CommonInputField( ) { UserTextInput(id, name, age, height) DataButtons( - id.intValue, name.value, age.intValue, height.doubleValue, showDialog, showErrorText + id.intValue, + name.value, + age.intValue, + height.doubleValue, + showDialog, + showErrorText, + dialogState ) if (showErrorText.value) { ErrorText() @@ -81,7 +92,16 @@ fun CommonInputField( User(id.intValue, name.value, age.intValue, height.doubleValue), showDialog, dialogState ) } - if (dialogState.value != DialogDisplayEnums.NONE) { + if (dialogState.value == DialogDisplayEnums.DISPLAY) { + BasicAlertDialog( + onDismissRequest = { dialogState.value = DialogDisplayEnums.NONE }, + modifier = Modifier + .fillMaxWidth() + .background(White) + ) { + DisplayColumn() + } + } else if (dialogState.value != DialogDisplayEnums.NONE) { ResultDialog(dialogState) } } @@ -142,7 +162,8 @@ fun DataButtons( age: Int, height: Double, showDialog: MutableState, - showErrorText: MutableState + showErrorText: MutableState, + dialogState: MutableState ) { Row( horizontalArrangement = Arrangement.Center @@ -161,7 +182,9 @@ fun DataButtons( }) { Text(stringResource(R.string.data_button_1)) } - Button(modifier = buttonModifier, onClick = { }) { + Button(modifier = buttonModifier, onClick = { + dialogState.value = DialogDisplayEnums.DISPLAY + }) { Text(stringResource(R.string.data_button_2)) } } diff --git a/app/src/main/java/com/hirrao/appktp/enums/DialogDisplayEnums.kt b/app/src/main/java/com/hirrao/appktp/enums/DialogDisplayEnums.kt index 5b1c51d..381800c 100644 --- a/app/src/main/java/com/hirrao/appktp/enums/DialogDisplayEnums.kt +++ b/app/src/main/java/com/hirrao/appktp/enums/DialogDisplayEnums.kt @@ -1,5 +1,5 @@ package com.hirrao.appktp.enums enum class DialogDisplayEnums { - NONE, INSERT_SUCCESS, INSERT_ERROR, UPDATE_SUCCESS, UPDATE_ERROR, DELETE_SUCCESS, DELETE_ERROR, + NONE, INSERT_SUCCESS, INSERT_ERROR, UPDATE_SUCCESS, UPDATE_ERROR, DELETE_SUCCESS, DELETE_ERROR, DISPLAY } \ No newline at end of file diff --git a/app/src/main/java/com/hirrao/appktp/theme/Color.kt b/app/src/main/java/com/hirrao/appktp/theme/Color.kt index ad79056..c942a7e 100644 --- a/app/src/main/java/com/hirrao/appktp/theme/Color.kt +++ b/app/src/main/java/com/hirrao/appktp/theme/Color.kt @@ -2,6 +2,8 @@ package com.hirrao.appktp.theme import androidx.compose.ui.graphics.Color +val White = Color(0xFFFFFFFF) + val Blue10 = Color(0xFF000F5E) val Blue20 = Color(0xFF001E92) val Blue30 = Color(0xFF002ECC) diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index ba52a55..6bed321 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -20,4 +20,5 @@ 成功删除数据 删除数据失败, ID可能不存在 成功更新数据 + 展示数据 \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e8eb6b4..4bb9c70 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -19,4 +19,5 @@ Update data success Update data error, maybe the id is not exact Confirm + Show values \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 34058a1..0c69f11 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,18 +2,18 @@ targetSdk = "36" compileSdk = "36" minSdk = "26" -agp = "8.9.1" +agp = "8.10.1" kotlin = "2.1.20" coreKtx = "1.16.0" junit = "4.13.2" junitVersion = "1.2.1" espressoCore = "3.6.1" -lifecycleRuntimeKtx = "2.8.7" +lifecycle = "2.9.1" activityCompose = "1.10.1" -composeBom = "2025.04.00" -room = "2.7.0" +composeBom = "2025.06.00" +room = "2.7.1" ksp = "2.1.20-2.0.0" -ui = "1.7.8" +ui = "1.8.2" material3 = "1.3.2" [libraries] @@ -21,7 +21,7 @@ androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = junit = { group = "junit", name = "junit", version.ref = "junit" } androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" } androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" } -androidx-lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "lifecycleRuntimeKtx" } +androidx-lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "lifecycle" } androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "activityCompose" } androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "composeBom" } androidx-ui = { group = "androidx.compose.ui", name = "ui", version.ref = "ui" }