diff --git a/app/src/main/java/com/aiosman/ravenow/ui/Navi.kt b/app/src/main/java/com/aiosman/ravenow/ui/Navi.kt index 915c3b4..218a33e 100644 --- a/app/src/main/java/com/aiosman/ravenow/ui/Navi.kt +++ b/app/src/main/java/com/aiosman/ravenow/ui/Navi.kt @@ -35,6 +35,7 @@ import com.aiosman.ravenow.LocalSharedTransitionScope import com.aiosman.ravenow.ui.about.AboutScreen import com.aiosman.ravenow.ui.account.AccountEditScreen2 import com.aiosman.ravenow.ui.account.AccountSetting +import com.aiosman.ravenow.ui.account.BlockedUsersScreen import com.aiosman.ravenow.ui.account.MbtiSelectScreen import com.aiosman.ravenow.ui.account.RemoveAccountScreen import com.aiosman.ravenow.ui.account.ResetPasswordScreen @@ -135,6 +136,7 @@ sealed class NavigationRoute( data object ZodiacSelect : NavigationRoute("ZodiacSelect") data object ScanQr : NavigationRoute("ScanQr") data object AiPromptEdit : NavigationRoute("AiPromptEdit/{chatAIId}") + data object BlockedUsersScreen : NavigationRoute("BlockedUsersScreen") } @@ -439,6 +441,9 @@ fun NavigationController( composable(route = NavigationRoute.ChangePasswordScreen.route) { ChangePasswordScreen() } + composable(route = NavigationRoute.BlockedUsersScreen.route) { + BlockedUsersScreen() + } composable(route = NavigationRoute.RemoveAccountScreen.route) { RemoveAccountScreen() } diff --git a/app/src/main/java/com/aiosman/ravenow/ui/account/AccountSetting.kt b/app/src/main/java/com/aiosman/ravenow/ui/account/AccountSetting.kt index 2b527ad..4c7fba0 100644 --- a/app/src/main/java/com/aiosman/ravenow/ui/account/AccountSetting.kt +++ b/app/src/main/java/com/aiosman/ravenow/ui/account/AccountSetting.kt @@ -161,9 +161,7 @@ fun AccountSetting() { SecurityOptionItem( iconRes = R.mipmap.icons_block, label = stringResource(R.string.blocked_users), - onClick = { - // TODO: 导航到屏蔽用户页面 - } + onClick = { navController.navigate(NavigationRoute.BlockedUsersScreen.route) } ) SecurityOptionItem( diff --git a/app/src/main/java/com/aiosman/ravenow/ui/account/BlockedUsersScreen.kt b/app/src/main/java/com/aiosman/ravenow/ui/account/BlockedUsersScreen.kt new file mode 100644 index 0000000..e4765de --- /dev/null +++ b/app/src/main/java/com/aiosman/ravenow/ui/account/BlockedUsersScreen.kt @@ -0,0 +1,127 @@ +package com.aiosman.ravenow.ui.account + +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.material.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.ColorFilter +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.aiosman.ravenow.LocalAppTheme +import com.aiosman.ravenow.LocalNavController +import com.aiosman.ravenow.R +import com.aiosman.ravenow.ui.composables.StatusBarSpacer +import com.aiosman.ravenow.ui.modifiers.noRippleClickable + +private object BlockedUsersConstants { + const val BACK_BUTTON_SIZE = 36 + const val BACK_BUTTON_ICON_SIZE = 24 + const val BACK_BUTTON_START_PADDING = 19 + const val HEADER_VERTICAL_PADDING = 16 + const val TITLE_OFFSET_X = 19 + const val TITLE_TEXT_SIZE = 17 +} + +@Composable +private fun CircularBackButton( + onClick: () -> Unit, + modifier: Modifier = Modifier +) { + val appColors = LocalAppTheme.current + Image( + painter = painterResource(id = R.drawable.rider_pro_back_icon), + contentDescription = "返回", + modifier = modifier + .size(BlockedUsersConstants.BACK_BUTTON_ICON_SIZE.dp) + .noRippleClickable { onClick() }, + colorFilter = ColorFilter.tint(appColors.text) + ) +} + +/** + * 被屏蔽的用户界面 + */ +@Composable +fun BlockedUsersScreen() { + val appColors = LocalAppTheme.current + val navController = LocalNavController.current + + Column( + modifier = Modifier + .fillMaxSize() + .background(appColors.background), + ) { + StatusBarSpacer() + + // 顶部标题栏 + Box( + modifier = Modifier + .fillMaxWidth() + .padding(vertical = BlockedUsersConstants.HEADER_VERTICAL_PADDING.dp) + ) { + Row( + modifier = Modifier.fillMaxWidth(), + verticalAlignment = Alignment.CenterVertically + ) { + CircularBackButton( + onClick = { navController.navigateUp() }, + modifier = Modifier.padding(start = BlockedUsersConstants.BACK_BUTTON_START_PADDING.dp) + ) + Spacer(modifier = Modifier.width(12.dp)) + Text( + text = stringResource(R.string.blocked_users), + fontWeight = FontWeight.W800, + fontSize = BlockedUsersConstants.TITLE_TEXT_SIZE.sp, + color = appColors.text + ) + } + } + + // 缺省状态 + Box( + modifier = Modifier + .fillMaxSize() + .padding(top = 149.dp), + contentAlignment = Alignment.TopCenter + ) { + Column( + horizontalAlignment = Alignment.CenterHorizontally, + modifier = Modifier.fillMaxWidth() + ) { + Image( + painter = painterResource(id = R.mipmap.frame_23), + contentDescription = null, + modifier = Modifier.size(181.dp, 153.dp) + ) + Spacer(modifier = Modifier.size(9.dp)) + Text( + text = stringResource(R.string.no_users_isolated_yet), + color = appColors.text, + fontSize = 16.sp, + fontWeight = FontWeight.W600, + textAlign = TextAlign.Center, + modifier = Modifier.padding(horizontal = 24.dp), + maxLines = 2, + overflow = TextOverflow.Ellipsis + ) + } + } + } +} + diff --git a/app/src/main/java/com/aiosman/ravenow/ui/comment/notice/CommentNotice.kt b/app/src/main/java/com/aiosman/ravenow/ui/comment/notice/CommentNotice.kt index 83549a1..656f697 100644 --- a/app/src/main/java/com/aiosman/ravenow/ui/comment/notice/CommentNotice.kt +++ b/app/src/main/java/com/aiosman/ravenow/ui/comment/notice/CommentNotice.kt @@ -124,27 +124,18 @@ fun CommentNoticeScreen() { modifier = Modifier.fillMaxWidth() ) { androidx.compose.foundation.Image( - painter = painterResource( - id = if(AppState.darkMode) R.mipmap.tietie_dark - else R.mipmap.invalid_name_11), + painter = painterResource(id = R.mipmap.invalid_name_5), contentDescription = "No Comment", modifier = Modifier .size(width = 181.dp, height = 153.dp) ) - Spacer(modifier = Modifier.height(24.dp)) + Spacer(modifier = Modifier.height(9.dp)) Text( - text = "等一位旅人~", + text = stringResource(R.string.no_one_pinged_yet), color = AppColors.text, fontSize = 16.sp, fontWeight = FontWeight.W600 ) - Spacer(modifier = Modifier.size(8.dp)) - Text( - text = "去发布动态,让更多人参与对话", - color = AppColors.text, - fontSize = 14.sp, - fontWeight = FontWeight.W400 - ) } } } else { diff --git a/app/src/main/java/com/aiosman/ravenow/ui/composables/TabItem.kt b/app/src/main/java/com/aiosman/ravenow/ui/composables/TabItem.kt index f1dd4c2..e3e7558 100644 --- a/app/src/main/java/com/aiosman/ravenow/ui/composables/TabItem.kt +++ b/app/src/main/java/com/aiosman/ravenow/ui/composables/TabItem.kt @@ -93,33 +93,29 @@ fun UnderlineTabItem( label = "padding" ) - Column( + Box( modifier = modifier .noRippleClickable { onClick() }, - verticalArrangement = Arrangement.Center, - horizontalAlignment = Alignment.CenterHorizontally + contentAlignment = Alignment.Center ) { - Box( + // 文本层 - 始终居中,不受下划线影响 + Text( + text = text, + fontSize = animatedFontSize.sp, + fontWeight = FontWeight.ExtraBold, + color = if (isSelected) AppColors.text else AppColors.text.copy(alpha = 0.6f), + textAlign = androidx.compose.ui.text.style.TextAlign.Center, modifier = Modifier .padding(horizontal = animatedPadding) - .padding(top = 13.dp, bottom = 0.dp), - contentAlignment = Alignment.BottomCenter - ) { - Text( - text = text, - fontSize = animatedFontSize.sp, - fontWeight = FontWeight.ExtraBold, - color = if (isSelected) AppColors.text else AppColors.text.copy(alpha = 0.6f), - textAlign = androidx.compose.ui.text.style.TextAlign.Center - ) - } + ) - // 选中状态下显示图标 + // 下划线层 - 固定在底部,不影响文本位置 if (isSelected) { Box( modifier = Modifier + .align(Alignment.BottomCenter) .size(24.dp) - .offset(y = (-4).dp), + .offset(y = (15).dp), contentAlignment = Alignment.Center ) { Image( diff --git a/app/src/main/java/com/aiosman/ravenow/ui/favourite/FavouriteListPage.kt b/app/src/main/java/com/aiosman/ravenow/ui/favourite/FavouriteListPage.kt index f27f4cd..2b2868a 100644 --- a/app/src/main/java/com/aiosman/ravenow/ui/favourite/FavouriteListPage.kt +++ b/app/src/main/java/com/aiosman/ravenow/ui/favourite/FavouriteListPage.kt @@ -134,8 +134,8 @@ fun FavouriteListPage() { ) { Image( painter = painterResource( - id = if (com.aiosman.ravenow.AppState.darkMode) R.mipmap.invalid_dark - else R.mipmap.invalid_name_1), + id = if (com.aiosman.ravenow.AppState.darkMode) R.mipmap.empty_img + else R.mipmap.empty_img), contentDescription = "No favourites", modifier = Modifier.size(181.dp, 153.dp) ) diff --git a/app/src/main/java/com/aiosman/ravenow/ui/follower/FollowerList.kt b/app/src/main/java/com/aiosman/ravenow/ui/follower/FollowerList.kt index d6bd19f..6cd6f05 100644 --- a/app/src/main/java/com/aiosman/ravenow/ui/follower/FollowerList.kt +++ b/app/src/main/java/com/aiosman/ravenow/ui/follower/FollowerList.kt @@ -125,15 +125,13 @@ fun FollowerListScreen(userId: Int) { modifier = Modifier.fillMaxWidth() ) { Image( - painter = painterResource( - id = if(AppState.darkMode) R.mipmap.frame_4 - else R.mipmap.invalid_name_8), + painter = painterResource(id = R.mipmap.frame_31), contentDescription = null, modifier = Modifier.size(181.dp, 153.dp) ) Spacer(modifier = Modifier.size(9.dp)) // 调整间距为9dp androidx.compose.material.Text( - text = stringResource(R.string.follower_empty_title), + text = stringResource(R.string.awaiting_traveler), color = appColors.text, fontSize = 16.sp, fontWeight = FontWeight.W600, @@ -142,17 +140,6 @@ fun FollowerListScreen(userId: Int) { maxLines = 2, overflow = TextOverflow.Ellipsis ) - Spacer(modifier = Modifier.size(8.dp)) - androidx.compose.material.Text( - text = stringResource(R.string.follower_empty_subtitle), - color = appColors.text, - fontSize = 14.sp, - fontWeight = FontWeight.W400, - textAlign = TextAlign.Center, - modifier = Modifier.padding(horizontal = 24.dp), - maxLines = 3, - overflow = TextOverflow.Ellipsis - ) } } } else { diff --git a/app/src/main/java/com/aiosman/ravenow/ui/follower/FollowerNotice.kt b/app/src/main/java/com/aiosman/ravenow/ui/follower/FollowerNotice.kt index 554433b..4c7dee9 100644 --- a/app/src/main/java/com/aiosman/ravenow/ui/follower/FollowerNotice.kt +++ b/app/src/main/java/com/aiosman/ravenow/ui/follower/FollowerNotice.kt @@ -115,16 +115,14 @@ fun FollowerNoticeScreen() { modifier = Modifier.fillMaxWidth() ) { Image( - painter = painterResource( - id = if(AppState.darkMode) R.mipmap.frame_4 - else R.mipmap.invalid_name_8), + painter = painterResource(id = R.mipmap.invalid_name_5), contentDescription = "No Followers", modifier = Modifier .size(width = 181.dp, height = 153.dp) ) - Spacer(modifier = Modifier.height(if (AppState.darkMode) 9.dp else 24.dp)) + Spacer(modifier = Modifier.height(9.dp)) androidx.compose.material.Text( - text = stringResource(R.string.follower_empty_title), + text = stringResource(R.string.no_one_pinged_yet), color = AppColors.text, fontSize = 16.sp, fontWeight = FontWeight.W600, @@ -133,17 +131,6 @@ fun FollowerNoticeScreen() { maxLines = 2, overflow = TextOverflow.Ellipsis ) - Spacer(modifier = Modifier.size(8.dp)) - androidx.compose.material.Text( - text = stringResource(R.string.follower_empty_subtitle), - color = AppColors.text, - fontSize = 14.sp, - fontWeight = FontWeight.W400, - textAlign = TextAlign.Center, - modifier = Modifier.padding(horizontal = 24.dp), - maxLines = 3, - overflow = TextOverflow.Ellipsis - ) } } }else{ diff --git a/app/src/main/java/com/aiosman/ravenow/ui/follower/FollowingList.kt b/app/src/main/java/com/aiosman/ravenow/ui/follower/FollowingList.kt index 79c6b9f..ae568c7 100644 --- a/app/src/main/java/com/aiosman/ravenow/ui/follower/FollowingList.kt +++ b/app/src/main/java/com/aiosman/ravenow/ui/follower/FollowingList.kt @@ -127,15 +127,13 @@ fun FollowingListScreen(userId: Int) { modifier = Modifier.fillMaxWidth() ) { Image( - painter = painterResource( - id = if(AppState.darkMode) R.mipmap.frame_3 - else R.mipmap.invalid_name_9), + painter = painterResource(id = R.mipmap.frame_31), contentDescription = null, modifier = Modifier.size(181.dp, 153.dp) ) Spacer(modifier = Modifier.size(9.dp)) // 调整间距为9dp androidx.compose.material.Text( - text = stringResource(R.string.following_empty_title), + text = stringResource(R.string.awaiting_traveler), color = appColors.text, fontSize = 16.sp, fontWeight = FontWeight.W600, @@ -144,17 +142,6 @@ fun FollowingListScreen(userId: Int) { maxLines = 2, overflow = TextOverflow.Ellipsis ) - Spacer(modifier = Modifier.size(8.dp)) - androidx.compose.material.Text( - text = stringResource(R.string.following_empty_subtitle), - color = appColors.secondaryText, - fontSize = 14.sp, - fontWeight = FontWeight.W400, - textAlign = TextAlign.Center, - modifier = Modifier.padding(horizontal = 24.dp), - maxLines = 3, - overflow = TextOverflow.Ellipsis - ) } } }else{ diff --git a/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/message/tab/AgentChatListScreen.kt b/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/message/tab/AgentChatListScreen.kt index 79c53ff..ef44a4c 100644 --- a/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/message/tab/AgentChatListScreen.kt +++ b/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/message/tab/AgentChatListScreen.kt @@ -48,6 +48,7 @@ import com.aiosman.ravenow.ui.composables.CustomAsyncImage import com.aiosman.ravenow.ui.composables.rememberDebouncer import com.aiosman.ravenow.ui.modifiers.noRippleClickable import com.aiosman.ravenow.utils.NetworkUtils +import com.aiosman.ravenow.ui.network.ReloadButton /** * 智能体聊天列表页面 @@ -97,16 +98,15 @@ fun AgentChatListScreen() { if (isNetworkAvailable) { Spacer(modifier = Modifier.height(39.dp)) Image( - painter = painterResource( - id = if(AppState.darkMode) R.mipmap.juhao_dark - else R.mipmap.invalid_name_5), + painter = painterResource(id = R.mipmap.invalid_name_3), contentDescription = "null data", modifier = Modifier - .size(width = 181.dp, height = 153.dp) + .width(181.dp) + .height(153.dp) ) - Spacer(modifier = Modifier.height(if (AppState.darkMode) 9.dp else 24.dp)) + Spacer(modifier = Modifier.height(9.dp)) Text( - text = stringResource(R.string.agent_chat_empty_title), + text = stringResource(R.string.no_one_knocked_yet), color = AppColors.text, fontSize = 16.sp, fontWeight = FontWeight.W600, @@ -115,16 +115,6 @@ fun AgentChatListScreen() { maxLines = 2, overflow = TextOverflow.Ellipsis ) - Spacer(modifier = Modifier.height(8.dp)) - Text( - text = stringResource(R.string.agent_chat_empty_subtitle), - color = AppColors.secondaryText, - fontSize = 14.sp, - textAlign = TextAlign.Center, - modifier = Modifier.padding(horizontal = 24.dp), - maxLines = 3, - overflow = TextOverflow.Ellipsis - ) } else { Spacer(modifier = Modifier.height(39.dp)) diff --git a/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/message/tab/AllChatListScreen.kt b/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/message/tab/AllChatListScreen.kt index 15e87f7..b653640 100644 --- a/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/message/tab/AllChatListScreen.kt +++ b/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/message/tab/AllChatListScreen.kt @@ -42,6 +42,7 @@ import com.aiosman.ravenow.ui.composables.CustomAsyncImage import com.aiosman.ravenow.ui.composables.rememberDebouncer import com.aiosman.ravenow.ui.modifiers.noRippleClickable import com.aiosman.ravenow.utils.NetworkUtils +import com.aiosman.ravenow.ui.network.ReloadButton import androidx.compose.material.Button import androidx.compose.material.ButtonDefaults import androidx.compose.ui.text.font.FontFamily @@ -227,16 +228,15 @@ fun AllChatListScreen() { if (isNetworkAvailable) { Spacer(modifier = Modifier.height(39.dp)) Image( - painter = painterResource( - id = if(AppState.darkMode) R.mipmap.piao_dark - else R.mipmap.invalid_name_2), + painter = painterResource(id = R.mipmap.invalid_name_3), contentDescription = "null data", modifier = Modifier - .size(width = 181.dp, height = 153.dp) + .width(181.dp) + .height(153.dp) ) - Spacer(modifier = Modifier.height(if (AppState.darkMode) 9.dp else 24.dp)) + Spacer(modifier = Modifier.height(9.dp)) Text( - text = stringResource(R.string.friend_chat_empty_title), + text = stringResource(R.string.no_one_knocked_yet), color = AppColors.text, fontSize = 16.sp, fontWeight = FontWeight.W600, @@ -245,16 +245,6 @@ fun AllChatListScreen() { maxLines = 2, overflow = TextOverflow.Ellipsis ) - Spacer(modifier = Modifier.height(8.dp)) - Text( - text = stringResource(R.string.friend_chat_empty_subtitle), - color = AppColors.secondaryText, - fontSize = 14.sp, - textAlign = TextAlign.Center, - modifier = Modifier.padding(horizontal = 24.dp), - maxLines = 3, - overflow = TextOverflow.Ellipsis - ) } else { Spacer(modifier = Modifier.height(39.dp)) Image( diff --git a/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/message/tab/FriendChatListScreen.kt b/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/message/tab/FriendChatListScreen.kt index 0c89b6d..2736045 100644 --- a/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/message/tab/FriendChatListScreen.kt +++ b/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/message/tab/FriendChatListScreen.kt @@ -84,16 +84,15 @@ fun FriendChatListScreen() { if (isNetworkAvailable) { Spacer(modifier = Modifier.height(39.dp)) Image( - painter = painterResource( - id = if(AppState.darkMode) R.mipmap.piao_dark - else R.mipmap.invalid_name_2), + painter = painterResource(id = R.mipmap.invalid_name_3), contentDescription = "null data", modifier = Modifier - .size(width = 181.dp, height = 153.dp) + .width(181.dp) + .height(153.dp) ) - Spacer(modifier = Modifier.height(if (AppState.darkMode) 9.dp else 24.dp)) + Spacer(modifier = Modifier.height(9.dp)) Text( - text = stringResource(R.string.friend_chat_empty_title), + text = stringResource(R.string.no_one_knocked_yet), color = AppColors.text, fontSize = 16.sp, fontWeight = FontWeight.W600, @@ -102,16 +101,6 @@ fun FriendChatListScreen() { maxLines = 2, overflow = TextOverflow.Ellipsis ) - Spacer(modifier = Modifier.height(8.dp)) - Text( - text = stringResource(R.string.friend_chat_empty_subtitle), - color = AppColors.secondaryText, - fontSize = 14.sp, - textAlign = TextAlign.Center, - modifier = Modifier.padding(horizontal = 24.dp), - maxLines = 3, - overflow = TextOverflow.Ellipsis - ) }else { Spacer(modifier = Modifier.height(39.dp)) Image( diff --git a/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/message/tab/GroupChatListScreen.kt b/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/message/tab/GroupChatListScreen.kt index 63c9b2a..d6bd7b3 100644 --- a/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/message/tab/GroupChatListScreen.kt +++ b/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/message/tab/GroupChatListScreen.kt @@ -35,6 +35,7 @@ import com.aiosman.ravenow.ui.composables.CustomAsyncImage import com.aiosman.ravenow.ui.composables.rememberDebouncer import com.aiosman.ravenow.ui.modifiers.noRippleClickable import com.aiosman.ravenow.utils.NetworkUtils +import com.aiosman.ravenow.ui.network.ReloadButton @OptIn(ExperimentalMaterialApi::class) @Composable @@ -77,16 +78,15 @@ fun GroupChatListScreen() { if (isNetworkAvailable) { Spacer(modifier = Modifier.height(39.dp)) Image( - painter = painterResource( - id = if(AppState.darkMode) R.mipmap.fei_dark - else R.mipmap.invalid_name_12), + painter = painterResource(id = R.mipmap.invalid_name_3), contentDescription = "null data", modifier = Modifier - .size(width = 181.dp, height = 153.dp) + .width(181.dp) + .height(153.dp) ) - Spacer(modifier = Modifier.height(if (AppState.darkMode) 9.dp else 24.dp)) + Spacer(modifier = Modifier.height(9.dp)) Text( - text = stringResource(R.string.group_chat_empty), + text = stringResource(R.string.no_one_knocked_yet), color = AppColors.text, fontSize = 16.sp, fontWeight = FontWeight.W600, @@ -95,16 +95,6 @@ fun GroupChatListScreen() { maxLines = 2, overflow = TextOverflow.Ellipsis ) - Spacer(modifier = Modifier.height(8.dp)) - Text( - text = stringResource(R.string.group_chat_empty_join), - color = AppColors.secondaryText, - fontSize = 14.sp, - textAlign = TextAlign.Center, - modifier = Modifier.padding(horizontal = 24.dp), - maxLines = 3, - overflow = TextOverflow.Ellipsis - ) }else { Spacer(modifier = Modifier.height(39.dp)) Image( diff --git a/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/profile/ProfileV3.kt b/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/profile/ProfileV3.kt index 237f8a7..c771654 100644 --- a/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/profile/ProfileV3.kt +++ b/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/profile/ProfileV3.kt @@ -692,7 +692,7 @@ fun TopNavigationBar( if (backgroundAlpha >= 1f) Color.Black else Color.White } val cardBorderColor = if (AppState.darkMode) { - Color.White // 暗色模式下边框应为白色 + Color.White.copy(alpha = 0.35f) // 暗色模式下使用半透明白色,避免整体变白 } else { if (backgroundAlpha >= 1f) Color.Black else Color.White } @@ -747,8 +747,11 @@ fun TopNavigationBar( val cardBackgroundColor = remember(backgroundAlpha) { val smoothProgress = backgroundAlpha.coerceIn(0f, 1f) if (AppState.darkMode) { - // 暗色模式:从半透明白色逐渐变为更不透明的白色 - Color.White.copy(alpha = 0.52f + (0.48f * smoothProgress)) + // 暗色模式:保持在半透明灰白区间,避免滚动到顶部后变纯白 + val minAlpha = 0.18f + val maxAlpha = 0.35f + val alpha = minAlpha + (maxAlpha - minAlpha) * smoothProgress + Color.White.copy(alpha = alpha) } else { // 亮色模式:从半透明白色逐渐变为完全不透明的白色 Color.White.copy(alpha = 0.52f + (0.48f * smoothProgress)) diff --git a/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/profile/composable/GalleryItem.kt b/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/profile/composable/GalleryItem.kt index 26a09c6..9c4bb7a 100644 --- a/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/profile/composable/GalleryItem.kt +++ b/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/profile/composable/GalleryItem.kt @@ -199,18 +199,16 @@ fun GalleryGrid( horizontalAlignment = Alignment.CenterHorizontally ) { Image( - painter = painterResource( - id = if(AppState.darkMode) R.mipmap.shuihu_dark - else R.mipmap.invalid_name_7), + painter = painterResource(id = R.mipmap.l_empty_img), contentDescription = "暂无图片", modifier = Modifier .size(width = 181.dp, height = 153.dp), ) - Spacer(modifier = Modifier.height(if(AppState.darkMode) 9.dp else 24.dp)) + Spacer(modifier = Modifier.height(9.dp)) Text( - text = stringResource(R.string.your_story_not_started), + text = stringResource(R.string.cosmos_awaits), fontSize = 16.sp, color = AppColors.text, fontWeight = FontWeight.W600, @@ -219,19 +217,6 @@ fun GalleryGrid( maxLines = 2, overflow = TextOverflow.Ellipsis ) - - Spacer(modifier = Modifier.height(8.dp)) - - Text( - text = stringResource(R.string.publish_moment_greeting), - fontSize = 14.sp, - color = AppColors.secondaryText, - fontWeight = FontWeight.W400, - textAlign = TextAlign.Center, - modifier = Modifier.padding(horizontal = 24.dp), - maxLines = 3, - overflow = TextOverflow.Ellipsis - ) } } else { LazyVerticalGrid( diff --git a/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/profile/composable/GroupChatEmptyContent.kt b/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/profile/composable/GroupChatEmptyContent.kt index e1373e3..12133ea 100644 --- a/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/profile/composable/GroupChatEmptyContent.kt +++ b/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/profile/composable/GroupChatEmptyContent.kt @@ -136,7 +136,7 @@ fun GroupChatEmptyContent( // 空状态文本 Text( - text = stringResource(R.string.empty_nothing), + text = stringResource(R.string.cosmos_awaits), fontSize = 16.sp, fontWeight = FontWeight.SemiBold, color = AppColors.text, diff --git a/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/profile/composable/UserAgentsList.kt b/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/profile/composable/UserAgentsList.kt index 8ea6a7c..8811eb8 100644 --- a/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/profile/composable/UserAgentsList.kt +++ b/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/profile/composable/UserAgentsList.kt @@ -269,27 +269,24 @@ fun AgentEmptyContentWithSegments() { Spacer(modifier = Modifier.height(8.dp)) - // 空状态内容(使用智能体原本的图标和文字) + // 空状态内容(与动态、群聊保持一致) Column( modifier = Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally ) { if (isNetworkAvailable) { Image( - painter = painterResource( - id = if(AppState.darkMode) R.mipmap.ai_dark - else R.mipmap.ai), + painter = painterResource(id = R.mipmap.l_empty_img), contentDescription = "暂无Agent", modifier = Modifier .size(width = 181.dp, height = 153.dp) .align(Alignment.CenterHorizontally), ) - // 根据是否为深色模式调整间距 - Spacer(modifier = Modifier.height(if(AppState.darkMode) 9.dp else 24.dp)) + Spacer(modifier = Modifier.height(9.dp)) Text( - text = stringResource(R.string.exclusive_ai_waiting), + text = stringResource(R.string.cosmos_awaits), fontSize = 16.sp, color = AppColors.text, fontWeight = FontWeight.W600, @@ -298,19 +295,6 @@ fun AgentEmptyContentWithSegments() { maxLines = 2, overflow = TextOverflow.Ellipsis ) - - Spacer(modifier = Modifier.height(8.dp)) - - Text( - text = stringResource(R.string.ai_companion_not_tool), - fontSize = 14.sp, - color = AppColors.secondaryText, - fontWeight = FontWeight.W400, - textAlign = TextAlign.Center, - modifier = Modifier.padding(horizontal = 24.dp), - maxLines = 3, - overflow = TextOverflow.Ellipsis - ) } else { Image( painter = painterResource(id = R.mipmap.invalid_name_10), diff --git a/app/src/main/java/com/aiosman/ravenow/ui/like/LikePage.kt b/app/src/main/java/com/aiosman/ravenow/ui/like/LikePage.kt index 34fc3df..916b824 100644 --- a/app/src/main/java/com/aiosman/ravenow/ui/like/LikePage.kt +++ b/app/src/main/java/com/aiosman/ravenow/ui/like/LikePage.kt @@ -122,27 +122,18 @@ fun LikeNoticeScreen() { horizontalAlignment = Alignment.CenterHorizontally ) { Image( - painter = painterResource( - id = if(AppState.darkMode) R.mipmap.sanqiu_dark - else R.mipmap.invalid_name_6), + painter = painterResource(id = R.mipmap.invalid_name_5), contentDescription = "No Notice", modifier = Modifier .size(width = 181.dp, height = 153.dp) ) - Spacer(modifier = Modifier.height(if (AppState.darkMode) 9.dp else 24.dp)) + Spacer(modifier = Modifier.height(9.dp)) Text( - text = "你的赞在赶来的路上", + text = stringResource(R.string.no_one_pinged_yet), color = AppColors.text, fontSize = 16.sp, fontWeight = FontWeight.W600, ) - Spacer(modifier = Modifier.size(8.dp)) - Text( - text = "智能体和朋友看到后,说不定马上就来~", - color = AppColors.text, - fontSize = 14.sp, - fontWeight = FontWeight.W400 - ) } } }else{ diff --git a/app/src/main/res/mipmap-hdpi/empty_img.png b/app/src/main/res/mipmap-hdpi/empty_img.png new file mode 100644 index 0000000..e11e68c Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/empty_img.png differ diff --git a/app/src/main/res/mipmap-hdpi/frame_23.png b/app/src/main/res/mipmap-hdpi/frame_23.png new file mode 100644 index 0000000..26ffaa5 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/frame_23.png differ diff --git a/app/src/main/res/mipmap-hdpi/frame_31.png b/app/src/main/res/mipmap-hdpi/frame_31.png new file mode 100644 index 0000000..dd3306c Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/frame_31.png differ diff --git a/app/src/main/res/mipmap-mdpi/empty_img.png b/app/src/main/res/mipmap-mdpi/empty_img.png new file mode 100644 index 0000000..aa15601 Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/empty_img.png differ diff --git a/app/src/main/res/mipmap-mdpi/frame_23.png b/app/src/main/res/mipmap-mdpi/frame_23.png new file mode 100644 index 0000000..8f73e14 Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/frame_23.png differ diff --git a/app/src/main/res/mipmap-mdpi/frame_31.png b/app/src/main/res/mipmap-mdpi/frame_31.png new file mode 100644 index 0000000..4644d5c Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/frame_31.png differ diff --git a/app/src/main/res/mipmap-xhdpi/empty_img.png b/app/src/main/res/mipmap-xhdpi/empty_img.png new file mode 100644 index 0000000..b1bb0d3 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/empty_img.png differ diff --git a/app/src/main/res/mipmap-xhdpi/frame_23.png b/app/src/main/res/mipmap-xhdpi/frame_23.png new file mode 100644 index 0000000..15773f4 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/frame_23.png differ diff --git a/app/src/main/res/mipmap-xhdpi/frame_31.png b/app/src/main/res/mipmap-xhdpi/frame_31.png new file mode 100644 index 0000000..152d696 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/frame_31.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/empty_img.png b/app/src/main/res/mipmap-xxhdpi/empty_img.png new file mode 100644 index 0000000..2c020a1 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/empty_img.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/frame_23.png b/app/src/main/res/mipmap-xxhdpi/frame_23.png new file mode 100644 index 0000000..d2e1f4b Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/frame_23.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/frame_31.png b/app/src/main/res/mipmap-xxhdpi/frame_31.png new file mode 100644 index 0000000..7bb518e Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/frame_31.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/empty_img.png b/app/src/main/res/mipmap-xxxhdpi/empty_img.png new file mode 100644 index 0000000..8038a3a Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/empty_img.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/frame_23.png b/app/src/main/res/mipmap-xxxhdpi/frame_23.png new file mode 100644 index 0000000..062d8a0 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/frame_23.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/frame_31.png b/app/src/main/res/mipmap-xxxhdpi/frame_31.png new file mode 100644 index 0000000..6c89812 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/frame_31.png differ diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index de2a662..1406143 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -14,7 +14,7 @@ フォロワー 投稿 お気に入り - あれ、何もない。.. + ここはまだ空っぽだよ 通知 フォロー中 フォロー解除 @@ -392,6 +392,11 @@ 探検する 返信@%1$s 少なくとも1枚の画像を選択してください。 + 旅人を待ってるよ + まだ誰からも声がかからないよ + 小さな宇宙は、あなた待ち。 + まだ誰もノックしてないよ + まだユーザーが隔離されていません グループチャットを作成 diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index c1d2d99..64708db 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -162,7 +162,7 @@ 全部 公开 私有 - 咦,什么都没有... + 这里还空着呢~ 智能体聊天 AI 在等你的开场白 @@ -408,4 +408,9 @@ 房间记忆添加 自定义聊天背景 日程事件解锁 + 等一位旅人~ + 还没有人来打扰你 + 小宇宙等你探索。 + 还没有人敲门 + 还没有用户被隔离 \ 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 dc01973..cac5317 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -13,7 +13,7 @@ FOLLOWERS Posts FAVOURITES - Well,nothing + It’s still empty here NOTIFICATIONS FOLLOWING UNFOLLOW @@ -403,4 +403,9 @@ Room Memory Addition Custom Chat Background Schedule Event Unlock + Awaiting a traveler + No one has pinged you yet + Your cosmos awaits. + No one\'s knocked yet + No users have been isolated yet \ No newline at end of file