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 4367e5a..6d4e717 100644
--- a/app/src/main/res/values-ja/strings.xml
+++ b/app/src/main/res/values-ja/strings.xml
@@ -14,7 +14,7 @@
フォロワー
投稿
お気に入り
- あれ、何もない。..
+ ここはまだ空っぽだよ
通知
フォロー中
フォロー解除
@@ -383,6 +383,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 f125150..6a06d21 100644
--- a/app/src/main/res/values-zh/strings.xml
+++ b/app/src/main/res/values-zh/strings.xml
@@ -158,7 +158,7 @@
全部
公开
私有
- 咦,什么都没有...
+ 这里还空着呢~
智能体聊天
AI 在等你的开场白
@@ -401,4 +401,9 @@
去探索
回复@%1$s
请至少选择一张图片
+ 等一位旅人~
+ 还没有人来打扰你
+ 小宇宙等你探索。
+ 还没有人敲门
+ 还没有用户被隔离
\ 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 86ca961..3d33604 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
@@ -395,4 +395,9 @@
Explore
Reply @%1$s
Please select at least one image
+ 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