添加收藏界面、粉丝关注列表、点赞关注评论界面、动态智能体群聊界面、消息中的全部ai群聊好友界面缺省图以及文案

优化动态标签栏选中标签时的文本变大效果
添加我屏蔽的用户界面以及缺省图
修复我的派币按钮在深色模式下下滑时这个按钮会变白
This commit is contained in:
2025-11-17 18:47:45 +08:00
parent f981efd58d
commit e797ac93a7
36 changed files with 216 additions and 201 deletions

View File

@@ -35,6 +35,7 @@ import com.aiosman.ravenow.LocalSharedTransitionScope
import com.aiosman.ravenow.ui.about.AboutScreen import com.aiosman.ravenow.ui.about.AboutScreen
import com.aiosman.ravenow.ui.account.AccountEditScreen2 import com.aiosman.ravenow.ui.account.AccountEditScreen2
import com.aiosman.ravenow.ui.account.AccountSetting 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.MbtiSelectScreen
import com.aiosman.ravenow.ui.account.RemoveAccountScreen import com.aiosman.ravenow.ui.account.RemoveAccountScreen
import com.aiosman.ravenow.ui.account.ResetPasswordScreen import com.aiosman.ravenow.ui.account.ResetPasswordScreen
@@ -135,6 +136,7 @@ sealed class NavigationRoute(
data object ZodiacSelect : NavigationRoute("ZodiacSelect") data object ZodiacSelect : NavigationRoute("ZodiacSelect")
data object ScanQr : NavigationRoute("ScanQr") data object ScanQr : NavigationRoute("ScanQr")
data object AiPromptEdit : NavigationRoute("AiPromptEdit/{chatAIId}") data object AiPromptEdit : NavigationRoute("AiPromptEdit/{chatAIId}")
data object BlockedUsersScreen : NavigationRoute("BlockedUsersScreen")
} }
@@ -439,6 +441,9 @@ fun NavigationController(
composable(route = NavigationRoute.ChangePasswordScreen.route) { composable(route = NavigationRoute.ChangePasswordScreen.route) {
ChangePasswordScreen() ChangePasswordScreen()
} }
composable(route = NavigationRoute.BlockedUsersScreen.route) {
BlockedUsersScreen()
}
composable(route = NavigationRoute.RemoveAccountScreen.route) { composable(route = NavigationRoute.RemoveAccountScreen.route) {
RemoveAccountScreen() RemoveAccountScreen()
} }

View File

@@ -161,9 +161,7 @@ fun AccountSetting() {
SecurityOptionItem( SecurityOptionItem(
iconRes = R.mipmap.icons_block, iconRes = R.mipmap.icons_block,
label = stringResource(R.string.blocked_users), label = stringResource(R.string.blocked_users),
onClick = { onClick = { navController.navigate(NavigationRoute.BlockedUsersScreen.route) }
// TODO: 导航到屏蔽用户页面
}
) )
SecurityOptionItem( SecurityOptionItem(

View File

@@ -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
)
}
}
}
}

View File

@@ -124,27 +124,18 @@ fun CommentNoticeScreen() {
modifier = Modifier.fillMaxWidth() modifier = Modifier.fillMaxWidth()
) { ) {
androidx.compose.foundation.Image( androidx.compose.foundation.Image(
painter = painterResource( painter = painterResource(id = R.mipmap.invalid_name_5),
id = if(AppState.darkMode) R.mipmap.tietie_dark
else R.mipmap.invalid_name_11),
contentDescription = "No Comment", contentDescription = "No Comment",
modifier = Modifier modifier = Modifier
.size(width = 181.dp, height = 153.dp) .size(width = 181.dp, height = 153.dp)
) )
Spacer(modifier = Modifier.height(24.dp)) Spacer(modifier = Modifier.height(9.dp))
Text( Text(
text = "等一位旅人~", text = stringResource(R.string.no_one_pinged_yet),
color = AppColors.text, color = AppColors.text,
fontSize = 16.sp, fontSize = 16.sp,
fontWeight = FontWeight.W600 fontWeight = FontWeight.W600
) )
Spacer(modifier = Modifier.size(8.dp))
Text(
text = "去发布动态,让更多人参与对话",
color = AppColors.text,
fontSize = 14.sp,
fontWeight = FontWeight.W400
)
} }
} }
} else { } else {

View File

@@ -93,33 +93,29 @@ fun UnderlineTabItem(
label = "padding" label = "padding"
) )
Column( Box(
modifier = modifier modifier = modifier
.noRippleClickable { onClick() }, .noRippleClickable { onClick() },
verticalArrangement = Arrangement.Center, contentAlignment = Alignment.Center
horizontalAlignment = Alignment.CenterHorizontally
) { ) {
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 modifier = Modifier
.padding(horizontal = animatedPadding) .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) { if (isSelected) {
Box( Box(
modifier = Modifier modifier = Modifier
.align(Alignment.BottomCenter)
.size(24.dp) .size(24.dp)
.offset(y = (-4).dp), .offset(y = (15).dp),
contentAlignment = Alignment.Center contentAlignment = Alignment.Center
) { ) {
Image( Image(

View File

@@ -134,8 +134,8 @@ fun FavouriteListPage() {
) { ) {
Image( Image(
painter = painterResource( painter = painterResource(
id = if (com.aiosman.ravenow.AppState.darkMode) R.mipmap.invalid_dark id = if (com.aiosman.ravenow.AppState.darkMode) R.mipmap.empty_img
else R.mipmap.invalid_name_1), else R.mipmap.empty_img),
contentDescription = "No favourites", contentDescription = "No favourites",
modifier = Modifier.size(181.dp, 153.dp) modifier = Modifier.size(181.dp, 153.dp)
) )

View File

@@ -125,15 +125,13 @@ fun FollowerListScreen(userId: Int) {
modifier = Modifier.fillMaxWidth() modifier = Modifier.fillMaxWidth()
) { ) {
Image( Image(
painter = painterResource( painter = painterResource(id = R.mipmap.frame_31),
id = if(AppState.darkMode) R.mipmap.frame_4
else R.mipmap.invalid_name_8),
contentDescription = null, contentDescription = null,
modifier = Modifier.size(181.dp, 153.dp) modifier = Modifier.size(181.dp, 153.dp)
) )
Spacer(modifier = Modifier.size(9.dp)) // 调整间距为9dp Spacer(modifier = Modifier.size(9.dp)) // 调整间距为9dp
androidx.compose.material.Text( androidx.compose.material.Text(
text = stringResource(R.string.follower_empty_title), text = stringResource(R.string.awaiting_traveler),
color = appColors.text, color = appColors.text,
fontSize = 16.sp, fontSize = 16.sp,
fontWeight = FontWeight.W600, fontWeight = FontWeight.W600,
@@ -142,17 +140,6 @@ fun FollowerListScreen(userId: Int) {
maxLines = 2, maxLines = 2,
overflow = TextOverflow.Ellipsis 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 { } else {

View File

@@ -115,16 +115,14 @@ fun FollowerNoticeScreen() {
modifier = Modifier.fillMaxWidth() modifier = Modifier.fillMaxWidth()
) { ) {
Image( Image(
painter = painterResource( painter = painterResource(id = R.mipmap.invalid_name_5),
id = if(AppState.darkMode) R.mipmap.frame_4
else R.mipmap.invalid_name_8),
contentDescription = "No Followers", contentDescription = "No Followers",
modifier = Modifier modifier = Modifier
.size(width = 181.dp, height = 153.dp) .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( androidx.compose.material.Text(
text = stringResource(R.string.follower_empty_title), text = stringResource(R.string.no_one_pinged_yet),
color = AppColors.text, color = AppColors.text,
fontSize = 16.sp, fontSize = 16.sp,
fontWeight = FontWeight.W600, fontWeight = FontWeight.W600,
@@ -133,17 +131,6 @@ fun FollowerNoticeScreen() {
maxLines = 2, maxLines = 2,
overflow = TextOverflow.Ellipsis 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{ }else{

View File

@@ -127,15 +127,13 @@ fun FollowingListScreen(userId: Int) {
modifier = Modifier.fillMaxWidth() modifier = Modifier.fillMaxWidth()
) { ) {
Image( Image(
painter = painterResource( painter = painterResource(id = R.mipmap.frame_31),
id = if(AppState.darkMode) R.mipmap.frame_3
else R.mipmap.invalid_name_9),
contentDescription = null, contentDescription = null,
modifier = Modifier.size(181.dp, 153.dp) modifier = Modifier.size(181.dp, 153.dp)
) )
Spacer(modifier = Modifier.size(9.dp)) // 调整间距为9dp Spacer(modifier = Modifier.size(9.dp)) // 调整间距为9dp
androidx.compose.material.Text( androidx.compose.material.Text(
text = stringResource(R.string.following_empty_title), text = stringResource(R.string.awaiting_traveler),
color = appColors.text, color = appColors.text,
fontSize = 16.sp, fontSize = 16.sp,
fontWeight = FontWeight.W600, fontWeight = FontWeight.W600,
@@ -144,17 +142,6 @@ fun FollowingListScreen(userId: Int) {
maxLines = 2, maxLines = 2,
overflow = TextOverflow.Ellipsis 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{ }else{

View File

@@ -48,6 +48,7 @@ import com.aiosman.ravenow.ui.composables.CustomAsyncImage
import com.aiosman.ravenow.ui.composables.rememberDebouncer import com.aiosman.ravenow.ui.composables.rememberDebouncer
import com.aiosman.ravenow.ui.modifiers.noRippleClickable import com.aiosman.ravenow.ui.modifiers.noRippleClickable
import com.aiosman.ravenow.utils.NetworkUtils import com.aiosman.ravenow.utils.NetworkUtils
import com.aiosman.ravenow.ui.network.ReloadButton
/** /**
* 智能体聊天列表页面 * 智能体聊天列表页面
@@ -97,16 +98,15 @@ fun AgentChatListScreen() {
if (isNetworkAvailable) { if (isNetworkAvailable) {
Spacer(modifier = Modifier.height(39.dp)) Spacer(modifier = Modifier.height(39.dp))
Image( Image(
painter = painterResource( painter = painterResource(id = R.mipmap.invalid_name_3),
id = if(AppState.darkMode) R.mipmap.juhao_dark
else R.mipmap.invalid_name_5),
contentDescription = "null data", contentDescription = "null data",
modifier = Modifier 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(
text = stringResource(R.string.agent_chat_empty_title), text = stringResource(R.string.no_one_knocked_yet),
color = AppColors.text, color = AppColors.text,
fontSize = 16.sp, fontSize = 16.sp,
fontWeight = FontWeight.W600, fontWeight = FontWeight.W600,
@@ -115,16 +115,6 @@ fun AgentChatListScreen() {
maxLines = 2, maxLines = 2,
overflow = TextOverflow.Ellipsis 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 { else {
Spacer(modifier = Modifier.height(39.dp)) Spacer(modifier = Modifier.height(39.dp))

View File

@@ -42,6 +42,7 @@ import com.aiosman.ravenow.ui.composables.CustomAsyncImage
import com.aiosman.ravenow.ui.composables.rememberDebouncer import com.aiosman.ravenow.ui.composables.rememberDebouncer
import com.aiosman.ravenow.ui.modifiers.noRippleClickable import com.aiosman.ravenow.ui.modifiers.noRippleClickable
import com.aiosman.ravenow.utils.NetworkUtils import com.aiosman.ravenow.utils.NetworkUtils
import com.aiosman.ravenow.ui.network.ReloadButton
import androidx.compose.material.Button import androidx.compose.material.Button
import androidx.compose.material.ButtonDefaults import androidx.compose.material.ButtonDefaults
import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.font.FontFamily
@@ -227,16 +228,15 @@ fun AllChatListScreen() {
if (isNetworkAvailable) { if (isNetworkAvailable) {
Spacer(modifier = Modifier.height(39.dp)) Spacer(modifier = Modifier.height(39.dp))
Image( Image(
painter = painterResource( painter = painterResource(id = R.mipmap.invalid_name_3),
id = if(AppState.darkMode) R.mipmap.piao_dark
else R.mipmap.invalid_name_2),
contentDescription = "null data", contentDescription = "null data",
modifier = Modifier 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(
text = stringResource(R.string.friend_chat_empty_title), text = stringResource(R.string.no_one_knocked_yet),
color = AppColors.text, color = AppColors.text,
fontSize = 16.sp, fontSize = 16.sp,
fontWeight = FontWeight.W600, fontWeight = FontWeight.W600,
@@ -245,16 +245,6 @@ fun AllChatListScreen() {
maxLines = 2, maxLines = 2,
overflow = TextOverflow.Ellipsis 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 { } else {
Spacer(modifier = Modifier.height(39.dp)) Spacer(modifier = Modifier.height(39.dp))
Image( Image(

View File

@@ -84,16 +84,15 @@ fun FriendChatListScreen() {
if (isNetworkAvailable) { if (isNetworkAvailable) {
Spacer(modifier = Modifier.height(39.dp)) Spacer(modifier = Modifier.height(39.dp))
Image( Image(
painter = painterResource( painter = painterResource(id = R.mipmap.invalid_name_3),
id = if(AppState.darkMode) R.mipmap.piao_dark
else R.mipmap.invalid_name_2),
contentDescription = "null data", contentDescription = "null data",
modifier = Modifier 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(
text = stringResource(R.string.friend_chat_empty_title), text = stringResource(R.string.no_one_knocked_yet),
color = AppColors.text, color = AppColors.text,
fontSize = 16.sp, fontSize = 16.sp,
fontWeight = FontWeight.W600, fontWeight = FontWeight.W600,
@@ -102,16 +101,6 @@ fun FriendChatListScreen() {
maxLines = 2, maxLines = 2,
overflow = TextOverflow.Ellipsis 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 { }else {
Spacer(modifier = Modifier.height(39.dp)) Spacer(modifier = Modifier.height(39.dp))
Image( Image(

View File

@@ -35,6 +35,7 @@ import com.aiosman.ravenow.ui.composables.CustomAsyncImage
import com.aiosman.ravenow.ui.composables.rememberDebouncer import com.aiosman.ravenow.ui.composables.rememberDebouncer
import com.aiosman.ravenow.ui.modifiers.noRippleClickable import com.aiosman.ravenow.ui.modifiers.noRippleClickable
import com.aiosman.ravenow.utils.NetworkUtils import com.aiosman.ravenow.utils.NetworkUtils
import com.aiosman.ravenow.ui.network.ReloadButton
@OptIn(ExperimentalMaterialApi::class) @OptIn(ExperimentalMaterialApi::class)
@Composable @Composable
@@ -77,16 +78,15 @@ fun GroupChatListScreen() {
if (isNetworkAvailable) { if (isNetworkAvailable) {
Spacer(modifier = Modifier.height(39.dp)) Spacer(modifier = Modifier.height(39.dp))
Image( Image(
painter = painterResource( painter = painterResource(id = R.mipmap.invalid_name_3),
id = if(AppState.darkMode) R.mipmap.fei_dark
else R.mipmap.invalid_name_12),
contentDescription = "null data", contentDescription = "null data",
modifier = Modifier 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(
text = stringResource(R.string.group_chat_empty), text = stringResource(R.string.no_one_knocked_yet),
color = AppColors.text, color = AppColors.text,
fontSize = 16.sp, fontSize = 16.sp,
fontWeight = FontWeight.W600, fontWeight = FontWeight.W600,
@@ -95,16 +95,6 @@ fun GroupChatListScreen() {
maxLines = 2, maxLines = 2,
overflow = TextOverflow.Ellipsis 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 { }else {
Spacer(modifier = Modifier.height(39.dp)) Spacer(modifier = Modifier.height(39.dp))
Image( Image(

View File

@@ -692,7 +692,7 @@ fun TopNavigationBar(
if (backgroundAlpha >= 1f) Color.Black else Color.White if (backgroundAlpha >= 1f) Color.Black else Color.White
} }
val cardBorderColor = if (AppState.darkMode) { val cardBorderColor = if (AppState.darkMode) {
Color.White // 暗色模式下边框应为白色 Color.White.copy(alpha = 0.35f) // 暗色模式下使用半透明白色,避免整体变白
} else { } else {
if (backgroundAlpha >= 1f) Color.Black else Color.White if (backgroundAlpha >= 1f) Color.Black else Color.White
} }
@@ -747,8 +747,11 @@ fun TopNavigationBar(
val cardBackgroundColor = remember(backgroundAlpha) { val cardBackgroundColor = remember(backgroundAlpha) {
val smoothProgress = backgroundAlpha.coerceIn(0f, 1f) val smoothProgress = backgroundAlpha.coerceIn(0f, 1f)
if (AppState.darkMode) { 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 { } else {
// 亮色模式:从半透明白色逐渐变为完全不透明的白色 // 亮色模式:从半透明白色逐渐变为完全不透明的白色
Color.White.copy(alpha = 0.52f + (0.48f * smoothProgress)) Color.White.copy(alpha = 0.52f + (0.48f * smoothProgress))

View File

@@ -199,18 +199,16 @@ fun GalleryGrid(
horizontalAlignment = Alignment.CenterHorizontally horizontalAlignment = Alignment.CenterHorizontally
) { ) {
Image( Image(
painter = painterResource( painter = painterResource(id = R.mipmap.l_empty_img),
id = if(AppState.darkMode) R.mipmap.shuihu_dark
else R.mipmap.invalid_name_7),
contentDescription = "暂无图片", contentDescription = "暂无图片",
modifier = Modifier modifier = Modifier
.size(width = 181.dp, height = 153.dp), .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.your_story_not_started), text = stringResource(R.string.cosmos_awaits),
fontSize = 16.sp, fontSize = 16.sp,
color = AppColors.text, color = AppColors.text,
fontWeight = FontWeight.W600, fontWeight = FontWeight.W600,
@@ -219,19 +217,6 @@ fun GalleryGrid(
maxLines = 2, maxLines = 2,
overflow = TextOverflow.Ellipsis 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 { } else {
LazyVerticalGrid( LazyVerticalGrid(

View File

@@ -136,7 +136,7 @@ fun GroupChatEmptyContent(
// 空状态文本 // 空状态文本
Text( Text(
text = stringResource(R.string.empty_nothing), text = stringResource(R.string.cosmos_awaits),
fontSize = 16.sp, fontSize = 16.sp,
fontWeight = FontWeight.SemiBold, fontWeight = FontWeight.SemiBold,
color = AppColors.text, color = AppColors.text,

View File

@@ -269,27 +269,24 @@ fun AgentEmptyContentWithSegments() {
Spacer(modifier = Modifier.height(8.dp)) Spacer(modifier = Modifier.height(8.dp))
// 空状态内容(使用智能体原本的图标和文字 // 空状态内容(与动态、群聊保持一致
Column( Column(
modifier = Modifier.fillMaxWidth(), modifier = Modifier.fillMaxWidth(),
horizontalAlignment = Alignment.CenterHorizontally horizontalAlignment = Alignment.CenterHorizontally
) { ) {
if (isNetworkAvailable) { if (isNetworkAvailable) {
Image( Image(
painter = painterResource( painter = painterResource(id = R.mipmap.l_empty_img),
id = if(AppState.darkMode) R.mipmap.ai_dark
else R.mipmap.ai),
contentDescription = "暂无Agent", contentDescription = "暂无Agent",
modifier = Modifier modifier = Modifier
.size(width = 181.dp, height = 153.dp) .size(width = 181.dp, height = 153.dp)
.align(Alignment.CenterHorizontally), .align(Alignment.CenterHorizontally),
) )
// 根据是否为深色模式调整间距 Spacer(modifier = Modifier.height(9.dp))
Spacer(modifier = Modifier.height(if(AppState.darkMode) 9.dp else 24.dp))
Text( Text(
text = stringResource(R.string.exclusive_ai_waiting), text = stringResource(R.string.cosmos_awaits),
fontSize = 16.sp, fontSize = 16.sp,
color = AppColors.text, color = AppColors.text,
fontWeight = FontWeight.W600, fontWeight = FontWeight.W600,
@@ -298,19 +295,6 @@ fun AgentEmptyContentWithSegments() {
maxLines = 2, maxLines = 2,
overflow = TextOverflow.Ellipsis 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 { } else {
Image( Image(
painter = painterResource(id = R.mipmap.invalid_name_10), painter = painterResource(id = R.mipmap.invalid_name_10),

View File

@@ -122,27 +122,18 @@ fun LikeNoticeScreen() {
horizontalAlignment = Alignment.CenterHorizontally horizontalAlignment = Alignment.CenterHorizontally
) { ) {
Image( Image(
painter = painterResource( painter = painterResource(id = R.mipmap.invalid_name_5),
id = if(AppState.darkMode) R.mipmap.sanqiu_dark
else R.mipmap.invalid_name_6),
contentDescription = "No Notice", contentDescription = "No Notice",
modifier = Modifier modifier = Modifier
.size(width = 181.dp, height = 153.dp) .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 = "你的赞在赶来的路上", text = stringResource(R.string.no_one_pinged_yet),
color = AppColors.text, color = AppColors.text,
fontSize = 16.sp, fontSize = 16.sp,
fontWeight = FontWeight.W600, fontWeight = FontWeight.W600,
) )
Spacer(modifier = Modifier.size(8.dp))
Text(
text = "智能体和朋友看到后,说不定马上就来~",
color = AppColors.text,
fontSize = 14.sp,
fontWeight = FontWeight.W400
)
} }
} }
}else{ }else{

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

View File

@@ -14,7 +14,7 @@
<string name="followers_upper">フォロワー</string> <string name="followers_upper">フォロワー</string>
<string name="posts">投稿</string> <string name="posts">投稿</string>
<string name="favourites_upper">お気に入り</string> <string name="favourites_upper">お気に入り</string>
<string name="favourites_null">あれ、何もない。..</string> <string name="favourites_null">ここはまだ空っぽだよ</string>
<string name="notifications_upper">通知</string> <string name="notifications_upper">通知</string>
<string name="following_upper">フォロー中</string> <string name="following_upper">フォロー中</string>
<string name="unfollow_upper">フォロー解除</string> <string name="unfollow_upper">フォロー解除</string>
@@ -383,6 +383,11 @@
<string name="explore">探検する</string> <string name="explore">探検する</string>
<string name="reply_to_user">返信@%1$s</string> <string name="reply_to_user">返信@%1$s</string>
<string name="error_select_at_least_one_image">少なくとも1枚の画像を選択してください。</string> <string name="error_select_at_least_one_image">少なくとも1枚の画像を選択してください。</string>
<string name="awaiting_traveler">旅人を待ってるよ</string>
<string name="no_one_pinged_yet">まだ誰からも声がかからないよ</string>
<string name="cosmos_awaits">小さな宇宙は、あなた待ち。</string>
<string name="no_one_knocked_yet">まだ誰もノックしてないよ</string>
<string name="no_users_isolated_yet">まだユーザーが隔離されていません</string>
<!-- Create Group Chat Confirm --> <!-- Create Group Chat Confirm -->
<string name="create_group_chat_confirm_title">グループチャットを作成</string> <string name="create_group_chat_confirm_title">グループチャットを作成</string>

View File

@@ -158,7 +158,7 @@
<string name="chat_all">全部</string> <string name="chat_all">全部</string>
<string name="public_label">公开</string> <string name="public_label">公开</string>
<string name="private_label">私有</string> <string name="private_label">私有</string>
<string name="favourites_null">咦,什么都没有...</string> <string name="favourites_null">这里还空着呢~</string>
<string name="agent_chat_list_title">智能体聊天</string> <string name="agent_chat_list_title">智能体聊天</string>
<string name="agent_chat_empty_title">AI 在等你的开场白</string> <string name="agent_chat_empty_title">AI 在等你的开场白</string>
@@ -401,4 +401,9 @@
<string name="explore">去探索</string> <string name="explore">去探索</string>
<string name="reply_to_user">回复@%1$s</string> <string name="reply_to_user">回复@%1$s</string>
<string name="error_select_at_least_one_image">请至少选择一张图片</string> <string name="error_select_at_least_one_image">请至少选择一张图片</string>
<string name="awaiting_traveler">等一位旅人~</string>
<string name="no_one_pinged_yet">还没有人来打扰你</string>
<string name="cosmos_awaits">小宇宙等你探索。</string>
<string name="no_one_knocked_yet">还没有人敲门</string>
<string name="no_users_isolated_yet">还没有用户被隔离</string>
</resources> </resources>

View File

@@ -13,7 +13,7 @@
<string name="followers_upper">FOLLOWERS</string> <string name="followers_upper">FOLLOWERS</string>
<string name="posts">Posts</string> <string name="posts">Posts</string>
<string name="favourites_upper">FAVOURITES</string> <string name="favourites_upper">FAVOURITES</string>
<string name="favourites_null">Well,nothing </string> <string name="favourites_null">Its still empty here </string>
<string name="notifications_upper">NOTIFICATIONS</string> <string name="notifications_upper">NOTIFICATIONS</string>
<string name="following_upper">FOLLOWING</string> <string name="following_upper">FOLLOWING</string>
<string name="unfollow_upper">UNFOLLOW</string> <string name="unfollow_upper">UNFOLLOW</string>
@@ -395,4 +395,9 @@
<string name="explore">Explore</string> <string name="explore">Explore</string>
<string name="reply_to_user">Reply @%1$s</string> <string name="reply_to_user">Reply @%1$s</string>
<string name="error_select_at_least_one_image">Please select at least one image</string> <string name="error_select_at_least_one_image">Please select at least one image</string>
<string name="awaiting_traveler">Awaiting a traveler</string>
<string name="no_one_pinged_yet">No one has pinged you yet</string>
<string name="cosmos_awaits">Your cosmos awaits.</string>
<string name="no_one_knocked_yet">No one\'s knocked yet</string>
<string name="no_users_isolated_yet">No users have been isolated yet</string>
</resources> </resources>