add:modification list

This commit is contained in:
2024-07-13 21:55:39 +08:00
parent 722843b155
commit 06130a1a66
3 changed files with 237 additions and 57 deletions

View File

@@ -1,5 +1,6 @@
package com.aiosman.riderpro package com.aiosman.riderpro
import ModificationListScreen
import android.os.Bundle import android.os.Bundle
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent import androidx.activity.compose.setContent
@@ -101,6 +102,9 @@ fun NavigationController(navController: NavHostController) {
composable(route="Post") { composable(route="Post") {
PostPage() PostPage()
} }
composable(route="ModificationList") {
ModificationListScreen()
}
} }
} }

View File

@@ -0,0 +1,99 @@
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.Card
import androidx.compose.material3.CardDefaults
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBar
import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.aiosman.riderpro.R
@OptIn(ExperimentalMaterial3Api::class)
@Preview
@Composable
fun ModificationListScreen() {
val modifications = getModifications()
Column(modifier = Modifier.fillMaxSize().background(Color(0xFFF8F8F8))) {
TopAppBar(
title = { Text("Modification List") },
navigationIcon = {
IconButton(onClick = { /* Handle back button click */ }) {
Icon(
painter = painterResource(id = R.drawable.rider_pro_nav_back), // Replace with your back icon
contentDescription = "Back"
)
}
},
colors = TopAppBarDefaults.topAppBarColors(
containerColor = Color(0xFFF8F8F8),
)
)
Spacer(modifier = Modifier.height(8.dp))
LazyColumn(modifier = Modifier.padding(16.dp)) {
items(modifications.size) { index ->
val modification = modifications[index]
ModificationItem(name = modification.name, price = modification.price)
Spacer(modifier = Modifier.height(8.dp))
}
}
}
}
data class Modification(val name: String, val price: String)
fun getModifications(): List<Modification> {
return listOf(
Modification("Modification name", "$74.00"),
Modification("Modification name", "$74.00"),
Modification("Modification name", "$74.00"),
Modification("Modification name", "$74.00"),
Modification("Modification name", "$74.00"),
Modification("Modification name", "$74.00"),
Modification("Modification name", "$74.00"),
Modification("Modification name", "$74.00"),
Modification("Modification name", "$74.00"),
Modification("Modification name", "$74.00"),
Modification("Modification name", "$74.00"),
Modification("Modification name", "$74.00"),
Modification("Modification name", "$74.00"),
Modification("Modification name", "$74.00"),
Modification("Modification name", "$74.00"),
Modification("Modification name", "$74.00"),
Modification("Modification name", "$74.00"),
Modification("Modification name", "$74.00"),
Modification("Modification name", "$74.00"),
Modification("Modification name", "$74.00"),
)
}
@Composable
fun ModificationItem(name: String, price: String) {
Card(
shape = RoundedCornerShape(8.dp),
modifier = Modifier.fillMaxWidth(),
colors = CardDefaults.cardColors(
containerColor = Color.White,
)
) {
Column(modifier = Modifier.padding(16.dp)) {
Text(text = name, fontSize = 16.sp, fontWeight = FontWeight.Bold)
Spacer(modifier = Modifier.height(8.dp))
Text(text = price, fontSize = 16.sp, fontWeight = FontWeight.Bold, color = Color.Red)
}
}
}

View File

@@ -1,11 +1,15 @@
package com.aiosman.riderpro package com.aiosman.riderpro
import androidx.annotation.DrawableRes import androidx.annotation.DrawableRes
import androidx.compose.foundation.Image import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.border import androidx.compose.foundation.border
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.defaultMinSize import androidx.compose.foundation.layout.defaultMinSize
import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
@@ -14,9 +18,13 @@ import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.offset
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.layout.width
import androidx.compose.foundation.layout.wrapContentWidth import androidx.compose.foundation.layout.wrapContentWidth
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Build
import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.Icon
import androidx.compose.material3.LocalTextStyle import androidx.compose.material3.LocalTextStyle
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
@@ -31,6 +39,8 @@ import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.LineHeightStyle import androidx.compose.ui.text.style.LineHeightStyle
import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.em import androidx.compose.ui.unit.em
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
@@ -84,11 +94,56 @@ fun MomentCard(momentItem: MomentItem){
) { ) {
MomentTopRowGroup(momentItem = momentItem) MomentTopRowGroup(momentItem = momentItem)
MomentContentGroup(momentItem = momentItem) MomentContentGroup(momentItem = momentItem)
val momentOperateBtnBoxModifier = Modifier.fillMaxHeight().weight(1f) val momentOperateBtnBoxModifier = Modifier
.fillMaxHeight()
.weight(1f)
ModificationListHeader()
MomentBottomOperateRowGroup(momentOperateBtnBoxModifier) MomentBottomOperateRowGroup(momentOperateBtnBoxModifier)
} }
} }
@Composable
fun ModificationListHeader() {
val navController = LocalNavController.current
Box(
modifier = Modifier
.fillMaxWidth()
.padding(16.dp)
) {
Box(
modifier = Modifier
.fillMaxWidth()
.background(Color(0xFFF8F8F8))
.padding(4.dp)
.clickable {
navController.navigate("ModificationList")
}
) {
Row(verticalAlignment = Alignment.CenterVertically) {
Box(
modifier = Modifier
.background(Color(0xFFEB4869))
.padding(8.dp)
) {
Icon(
Icons.Filled.Build,
contentDescription = "Modification Icon",
tint = Color.White, // Assuming the icon should be white
modifier = Modifier.size(12.dp)
)
}
Spacer(modifier = Modifier.width(12.dp))
Text(
text = "Modification List",
color = Color(0xFF333333),
fontSize = 14.sp,
textAlign = TextAlign.Left
)
}
}
}
}
@Composable @Composable
fun MomentName(name: String) { fun MomentName(name: String) {
Text( Text(
@@ -96,37 +151,45 @@ fun MomentName(name: String){
textAlign = TextAlign.Start, textAlign = TextAlign.Start,
text = name, text = name,
color = Color(0f, 0f, 0f), color = Color(0f, 0f, 0f),
fontSize = 16.sp, style = TextStyle(fontWeight = FontWeight.Bold)) fontSize = 16.sp, style = TextStyle(fontWeight = FontWeight.Bold)
)
} }
@Composable @Composable
fun MomentFollowBtn() { fun MomentFollowBtn() {
Box(modifier = Modifier Box(
modifier = Modifier
.size(width = 53.dp, height = 18.dp) .size(width = 53.dp, height = 18.dp)
.padding(start = 8.dp), .padding(start = 8.dp),
contentAlignment = Alignment.Center){ contentAlignment = Alignment.Center
) {
Image( Image(
modifier = Modifier modifier = Modifier
.fillMaxSize(), .fillMaxSize(),
painter = painterResource(id = R.drawable.follow_bg), painter = painterResource(id = R.drawable.follow_bg),
contentDescription = "" contentDescription = ""
) )
Text(text = "Follow", Text(
text = "Follow",
color = Color.White, color = Color.White,
fontSize = 12.sp) fontSize = 12.sp
)
} }
} }
@Composable @Composable
fun MomentPostLocation(location: String) { fun MomentPostLocation(location: String) {
Text(text = location, Text(
text = location,
color = Color(0f, 0f, 0f, 0.6f), color = Color(0f, 0f, 0f, 0.6f),
fontSize = 12.sp) fontSize = 12.sp
)
} }
@Composable @Composable
fun MomentPostTime(time: String) { fun MomentPostTime(time: String) {
Text(modifier = Modifier.padding(start = 8.dp), Text(
modifier = Modifier.padding(start = 8.dp),
text = time, color = Color(0f, 0f, 0f, 0.6f), text = time, color = Color(0f, 0f, 0f, 0.6f),
fontSize = 12.sp fontSize = 12.sp
) )
@@ -134,7 +197,8 @@ fun MomentPostTime(time: String){
@Composable @Composable
fun MomentTopRowGroup(momentItem: MomentItem) { fun MomentTopRowGroup(momentItem: MomentItem) {
Row (modifier = Modifier Row(
modifier = Modifier
.height(40.dp) .height(40.dp)
.padding(top = 0.dp, bottom = 0.dp, start = 24.dp, end = 24.dp) .padding(top = 0.dp, bottom = 0.dp, start = 24.dp, end = 24.dp)
) { ) {
@@ -147,7 +211,8 @@ fun MomentTopRowGroup(momentItem: MomentItem){
.defaultMinSize() .defaultMinSize()
.padding(start = 12.dp, end = 12.dp) .padding(start = 12.dp, end = 12.dp)
) { ) {
Row (modifier = Modifier Row(
modifier = Modifier
.fillMaxWidth() .fillMaxWidth()
.height(22.dp), .height(22.dp),
verticalAlignment = Alignment.CenterVertically verticalAlignment = Alignment.CenterVertically
@@ -155,7 +220,8 @@ fun MomentTopRowGroup(momentItem: MomentItem){
MomentName(momentItem.nickname) MomentName(momentItem.nickname)
MomentFollowBtn() MomentFollowBtn()
} }
Row (modifier = Modifier Row(
modifier = Modifier
.fillMaxWidth() .fillMaxWidth()
.height(21.dp), .height(21.dp),
verticalAlignment = Alignment.CenterVertically verticalAlignment = Alignment.CenterVertically
@@ -169,7 +235,8 @@ fun MomentTopRowGroup(momentItem: MomentItem){
@Composable @Composable
fun MomentContentGroup(momentItem: MomentItem) { fun MomentContentGroup(momentItem: MomentItem) {
Text(text = momentItem.momentTextContent, Text(
text = momentItem.momentTextContent,
modifier = Modifier modifier = Modifier
.fillMaxWidth() .fillMaxWidth()
.padding(top = 22.dp, bottom = 16.dp, start = 24.dp, end = 24.dp), .padding(top = 22.dp, bottom = 16.dp, start = 24.dp, end = 24.dp),
@@ -190,33 +257,43 @@ fun MomentOperateBtn(@DrawableRes icon: Int, count: String){
modifier = Modifier modifier = Modifier
.size(width = 24.dp, height = 24.dp), .size(width = 24.dp, height = 24.dp),
painter = painterResource(id = icon), painter = painterResource(id = icon),
contentDescription = "") contentDescription = ""
Text(text = count, )
Text(
text = count,
modifier = Modifier.padding(start = 7.dp), modifier = Modifier.padding(start = 7.dp),
fontSize = 12.sp,) fontSize = 12.sp,
)
} }
} }
@Composable @Composable
fun MomentBottomOperateRowGroup(modifier: Modifier) { fun MomentBottomOperateRowGroup(modifier: Modifier) {
Row (modifier = Modifier Row(
modifier = Modifier
.fillMaxWidth() .fillMaxWidth()
.height(56.dp)){ .height(56.dp)
Box(modifier = modifier, ) {
Box(
modifier = modifier,
contentAlignment = Alignment.Center contentAlignment = Alignment.Center
) { ) {
MomentOperateBtn(icon = R.drawable.rider_pro_like, count = "21") MomentOperateBtn(icon = R.drawable.rider_pro_like, count = "21")
} }
Box(modifier = modifier, Box(
modifier = modifier,
contentAlignment = Alignment.Center contentAlignment = Alignment.Center
) { ) {
MomentOperateBtn(icon = R.drawable.rider_pro_moment_comment, count = "43") MomentOperateBtn(icon = R.drawable.rider_pro_moment_comment, count = "43")
} }
Box(modifier = modifier, Box(
modifier = modifier,
contentAlignment = Alignment.Center contentAlignment = Alignment.Center
) { ) {
MomentOperateBtn(icon = R.drawable.rider_pro_share, count = "33") MomentOperateBtn(icon = R.drawable.rider_pro_share, count = "33")
} }
Box(modifier = modifier, Box(
modifier = modifier,
contentAlignment = Alignment.Center contentAlignment = Alignment.Center
) { ) {
MomentOperateBtn(icon = R.drawable.rider_pro_favoriate, count = "211") MomentOperateBtn(icon = R.drawable.rider_pro_favoriate, count = "211")