粉丝 关注 评论UI调整

This commit is contained in:
2025-08-22 18:52:41 +08:00
parent bd2d291164
commit 52d32a8510
5 changed files with 488 additions and 414 deletions

View File

@@ -76,6 +76,7 @@ fun NoticeScreenHeader(
modifier = Modifier.fillMaxWidth(), modifier = Modifier.fillMaxWidth(),
verticalAlignment = Alignment.CenterVertically, verticalAlignment = Alignment.CenterVertically,
) { ) {
//返回tab
Image( Image(
painter = painterResource(id = R.drawable.rider_pro_back_icon,), painter = painterResource(id = R.drawable.rider_pro_back_icon,),
contentDescription = title, contentDescription = title,
@@ -88,6 +89,7 @@ fun NoticeScreenHeader(
colorFilter = ColorFilter.tint(AppColors.text) colorFilter = ColorFilter.tint(AppColors.text)
) )
Spacer(modifier = Modifier.size(12.dp)) Spacer(modifier = Modifier.size(12.dp))
Spacer(modifier = Modifier.width(110.dp))
Text(title, fontWeight = FontWeight.W800, fontSize = 17.sp, color = AppColors.text) Text(title, fontWeight = FontWeight.W800, fontSize = 17.sp, color = AppColors.text)
if (moreIcon) { if (moreIcon) {
Spacer(modifier = Modifier.weight(1f)) Spacer(modifier = Modifier.weight(1f))

View File

@@ -22,7 +22,9 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
@@ -75,7 +77,39 @@ fun CommentNoticeScreen() {
) { ) {
NoticeScreenHeader(stringResource(R.string.comment), moreIcon = false) NoticeScreenHeader(stringResource(R.string.comment), moreIcon = false)
} }
if (comments.itemCount == 0 && comments.loadState.refresh is LoadState.NotLoading) {
Box(
modifier = Modifier
.fillMaxSize()
.padding(top = 188.dp),
contentAlignment = Alignment.TopCenter
) {
Column(
horizontalAlignment = Alignment.CenterHorizontally,
modifier = Modifier.fillMaxWidth()
) {
androidx.compose.foundation.Image(
painter = painterResource(id = R.mipmap.rider_pro_followers_empty),
contentDescription = null,
modifier = Modifier.size(140.dp)
)
Spacer(modifier = Modifier.size(24.dp))
Text(
text = "Wait for the first traveler to appear~",
color = AppColors.text,
fontSize = 16.sp,
fontWeight = FontWeight.W600
)
Spacer(modifier = Modifier.size(8.dp))
Text(
text = "Post to connect.",
color = AppColors.text,
fontSize = 16.sp,
fontWeight = FontWeight.W400
)
}
}
} else {
LazyColumn( LazyColumn(
modifier = Modifier modifier = Modifier
.fillMaxSize().padding(horizontal = 16.dp) .fillMaxSize().padding(horizontal = 16.dp)
@@ -141,7 +175,7 @@ fun CommentNoticeScreen() {
} }
} }
} }
}
} }
@Composable @Composable

View File

@@ -1,10 +1,14 @@
package com.aiosman.ravenow.ui.follower package com.aiosman.ravenow.ui.follower
import androidx.compose.foundation.Image
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.material.ExperimentalMaterialApi import androidx.compose.material.ExperimentalMaterialApi
import androidx.compose.material.pullrefresh.PullRefreshIndicator import androidx.compose.material.pullrefresh.PullRefreshIndicator
@@ -15,8 +19,11 @@ import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.lifecycle.viewmodel.compose.viewModel import androidx.lifecycle.viewmodel.compose.viewModel
import androidx.paging.compose.collectAsLazyPagingItems import androidx.paging.compose.collectAsLazyPagingItems
import com.aiosman.ravenow.AppState import com.aiosman.ravenow.AppState
@@ -55,6 +62,39 @@ fun FollowerListScreen(userId: Int) {
) { ) {
NoticeScreenHeader(stringResource(R.string.followers_upper), moreIcon = false) NoticeScreenHeader(stringResource(R.string.followers_upper), moreIcon = false)
} }
if (users.itemCount == 0) {
Box(
modifier = Modifier
.fillMaxSize()
.padding(top = 188.dp),
contentAlignment = Alignment.TopCenter
) {
Column(
horizontalAlignment = Alignment.CenterHorizontally,
modifier = Modifier.fillMaxWidth()
) {
Image(
painter = painterResource(id = R.mipmap.rider_pro_followers_empty),
contentDescription = null,
modifier = Modifier.size(140.dp)
)
Spacer(modifier = Modifier.size(24.dp))
androidx.compose.material.Text(
text = "No one's paying attention to you yet",
color = appColors.text,
fontSize = 16.sp,
fontWeight = FontWeight.W600
)
Spacer(modifier = Modifier.size(8.dp))
androidx.compose.material.Text(
text = "Your vibe attracts your tribe.",
color = appColors.text,
fontSize = 16.sp,
fontWeight = FontWeight.W400
)
}
}
} else {
Box( Box(
modifier = Modifier modifier = Modifier
.fillMaxWidth() .fillMaxWidth()
@@ -90,4 +130,5 @@ fun FollowerListScreen(userId: Int) {
) )
} }
} }
}
} }

View File

@@ -7,6 +7,7 @@ import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
@@ -61,12 +62,14 @@ fun FollowingListScreen(userId: Int) {
.padding(vertical = 16.dp) .padding(vertical = 16.dp)
) { ) {
NoticeScreenHeader(stringResource(R.string.following_upper), moreIcon = false) NoticeScreenHeader(stringResource(R.string.following_upper), moreIcon = false)
} }
if(users.itemCount == 0) { if(users.itemCount == 0) {
Box( Box(
modifier = Modifier modifier = Modifier
.fillMaxSize(), .fillMaxSize()
contentAlignment = Alignment.Center .padding(top=188.dp),
contentAlignment = Alignment.TopCenter
) { ) {
Column( Column(
horizontalAlignment = Alignment.CenterHorizontally, horizontalAlignment = Alignment.CenterHorizontally,
@@ -77,14 +80,14 @@ fun FollowingListScreen(userId: Int) {
contentDescription = null, contentDescription = null,
modifier = Modifier.size(140.dp) modifier = Modifier.size(140.dp)
) )
Spacer(modifier = Modifier.size(32.dp)) Spacer(modifier = Modifier.size(24.dp))
androidx.compose.material.Text( androidx.compose.material.Text(
text = "You haven't followed anyone yet", text = "You haven't followed anyone yet",
color = appColors.text, color = appColors.text,
fontSize = 16.sp, fontSize = 16.sp,
fontWeight = FontWeight.W600 fontWeight = FontWeight.W600
) )
Spacer(modifier = Modifier.size(16.dp)) Spacer(modifier = Modifier.size(8.dp))
androidx.compose.material.Text( androidx.compose.material.Text(
text = "Click start your social journey.", text = "Click start your social journey.",
color = appColors.text, color = appColors.text,
@@ -129,6 +132,5 @@ fun FollowingListScreen(userId: Int) {
) )
} }
} }
} }
} }

View File

@@ -48,6 +48,7 @@ import androidx.compose.ui.unit.sp
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.draw.blur import androidx.compose.ui.draw.blur
import androidx.compose.ui.graphics.graphicsLayer
import com.aiosman.ravenow.ui.composables.CustomAsyncImage import com.aiosman.ravenow.ui.composables.CustomAsyncImage
import androidx.lifecycle.viewmodel.compose.viewModel import androidx.lifecycle.viewmodel.compose.viewModel
import com.aiosman.ravenow.AppStore import com.aiosman.ravenow.AppStore
@@ -232,9 +233,9 @@ fun Explore() {
} }
@Composable @Composable
fun AgentPage(agentItems: List<AgentItem>, page: Int) { fun AgentPage(agentItems: List<AgentItem>, page: Int, modifier: Modifier = Modifier) {
Column( Column(
modifier = Modifier modifier = modifier
.fillMaxSize() .fillMaxSize()
.padding(horizontal = 0.dp) .padding(horizontal = 0.dp)
) { ) {
@@ -268,7 +269,9 @@ fun Explore() {
) { ) {
HorizontalPager( HorizontalPager(
state = pagerState, state = pagerState,
modifier = Modifier.fillMaxSize() modifier = Modifier.fillMaxSize(),
contentPadding = androidx.compose.foundation.layout.PaddingValues(horizontal = 4.dp),
pageSpacing = 0.dp
) { page -> ) { page ->
// 计算当前页面的偏移量 // 计算当前页面的偏移量
val pageOffset = ( val pageOffset = (
@@ -281,7 +284,12 @@ fun Explore() {
AgentPage( AgentPage(
agentItems = agentItems.drop(page * itemsPerPage).take(itemsPerPage), agentItems = agentItems.drop(page * itemsPerPage).take(itemsPerPage),
page = page page = page,
modifier = Modifier
.graphicsLayer {
scaleX = scale
scaleY = scale
}
) )
} }
} }
@@ -419,12 +427,12 @@ fun Explore() {
@Composable @Composable
fun BannerCard(bannerItem: BannerItem) { fun BannerCard(bannerItem: BannerItem, modifier: Modifier = Modifier) {
val AppColors = LocalAppTheme.current val AppColors = LocalAppTheme.current
val context = LocalContext.current val context = LocalContext.current
Card( Card(
modifier = Modifier modifier = modifier
.fillMaxSize() .fillMaxSize()
.padding(horizontal = 0.dp), .padding(horizontal = 0.dp),
shape = RoundedCornerShape(20.dp), shape = RoundedCornerShape(20.dp),
@@ -604,15 +612,15 @@ fun Explore() {
) { ) {
// 可以添加更多不同高度的内容项 // 第一块区域
item { item {
Row( Row(
modifier = Modifier modifier = Modifier
.fillMaxWidth() .fillMaxWidth()
.padding(vertical = 6.dp), .padding(vertical = 6.dp),
horizontalArrangement = androidx.compose.foundation.layout.Arrangement.SpaceEvenly horizontalArrangement = androidx.compose.foundation.layout.Arrangement.SpaceBetween
) { ) {
// 第一个 // 第一个 - 靠左显示
Column( Column(
modifier = Modifier modifier = Modifier
.clickable { .clickable {
@@ -642,6 +650,11 @@ fun Explore() {
) )
} }
// 中间两个 - 平均分布
Row(
modifier = Modifier.weight(1f),
horizontalArrangement = androidx.compose.foundation.layout.Arrangement.SpaceEvenly
) {
// 第二个 // 第二个
Column( Column(
modifier = Modifier modifier = Modifier
@@ -662,19 +675,7 @@ fun Explore() {
contentDescription = "创建智能体", contentDescription = "创建智能体",
modifier = Modifier.size(24.dp), modifier = Modifier.size(24.dp),
<<<<<<< HEAD
) )
=======
)
}
Spacer(modifier = Modifier.size(8.dp))
Text(
text = "发布动态",
fontSize = 12.sp,
color = AppColors.text,
fontWeight = androidx.compose.ui.text.font.FontWeight.W500
)
>>>>>>> upstream/main
} }
Spacer(modifier = Modifier.size(8.dp)) Spacer(modifier = Modifier.size(8.dp))
Text( Text(
@@ -715,8 +716,9 @@ fun Explore() {
fontWeight = androidx.compose.ui.text.font.FontWeight.W500 fontWeight = androidx.compose.ui.text.font.FontWeight.W500
) )
} }
}
// 第四个 // 第四个 - 靠右显示
Column( Column(
horizontalAlignment = Alignment.CenterHorizontally horizontalAlignment = Alignment.CenterHorizontally
) { ) {
@@ -744,9 +746,9 @@ fun Explore() {
} }
} }
@OptIn(ExperimentalFoundationApi::class) @OptIn(ExperimentalFoundationApi::class)
@Composable @Composable
fun BannerSection(bannerItems: List<BannerItem>) { fun BannerSection(bannerItems: List<BannerItem>) {
val AppColors = LocalAppTheme.current val AppColors = LocalAppTheme.current
val context = LocalContext.current val context = LocalContext.current
val scope = rememberCoroutineScope() val scope = rememberCoroutineScope()
@@ -788,12 +790,6 @@ fun Explore() {
) { ) {
HorizontalPager( HorizontalPager(
state = pagerState, state = pagerState,
<<<<<<< HEAD
modifier = Modifier.fillMaxSize()
) { page ->
val bannerItem = bannerItems[page]
BannerCard(bannerItem = bannerItem)
=======
modifier = Modifier.fillMaxSize(), modifier = Modifier.fillMaxSize(),
contentPadding = androidx.compose.foundation.layout.PaddingValues(horizontal = 4.dp), contentPadding = androidx.compose.foundation.layout.PaddingValues(horizontal = 4.dp),
) { page -> ) { page ->
@@ -816,7 +812,6 @@ fun Explore() {
scaleY = scale scaleY = scale
} }
) )
>>>>>>> upstream/main
} }
} }
@@ -840,7 +835,7 @@ fun Explore() {
} }
} }
} }
} }
// 第二块区域Banner // 第二块区域Banner
@@ -853,7 +848,7 @@ fun Explore() {
// 标题 // 标题
Row( Row(
verticalAlignment = Alignment.CenterVertically, verticalAlignment = Alignment.CenterVertically,
modifier = Modifier.padding(bottom = 30.dp) modifier = Modifier.padding(bottom = 12.dp)
) { ) {
Image( Image(
painter = painterResource(R.mipmap.rider_pro_fire2), painter = painterResource(R.mipmap.rider_pro_fire2),
@@ -894,9 +889,9 @@ fun Explore() {
) )
Spacer(modifier = Modifier.width(4.dp)) Spacer(modifier = Modifier.width(4.dp))
Text( Text(
text = "推荐给你的Agent", text = "推荐给你的智能体",
fontSize = 20.sp, fontSize = 16.sp,
fontWeight = androidx.compose.ui.text.font.FontWeight.W900, fontWeight = androidx.compose.ui.text.font.FontWeight.W600,
color = AppColors.text color = AppColors.text
) )
} }
@@ -921,7 +916,7 @@ fun Explore() {
Image( Image(
painter = painterResource(R.mipmap.rider_pro_hot_room), painter = painterResource(R.mipmap.rider_pro_hot_room),
contentDescription = "chat room", contentDescription = "chat room",
modifier = Modifier.size(28.dp), modifier = Modifier.size(24.dp),
) )
Spacer(modifier = Modifier.width(4.dp)) Spacer(modifier = Modifier.width(4.dp))
Text( Text(