update:new post

This commit is contained in:
2024-07-15 10:30:56 +08:00
parent 92ff2080d2
commit 204c6333c4
5 changed files with 256 additions and 70 deletions

View File

@@ -4,6 +4,7 @@ import androidx.annotation.DrawableRes
import androidx.compose.foundation.Image import androidx.compose.foundation.Image
import androidx.compose.foundation.background 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.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
@@ -26,18 +27,23 @@ import androidx.compose.ui.unit.sp
@Composable @Composable
fun AddPage(){ fun AddPage(){
val navController = LocalNavController.current
Column(modifier = Modifier Column(modifier = Modifier
.fillMaxSize() .fillMaxSize()
.background(Color.Black)) { .background(Color.Black)) {
AddBtn(icon = R.drawable.rider_pro_icon_rider_share, text = "Rider Share") AddBtn(icon = R.drawable.rider_pro_icon_rider_share, text = "Rider Share") {
navController.navigate("NewPost")
}
AddBtn(icon = R.drawable.rider_pro_location_create, text = "Location Create") AddBtn(icon = R.drawable.rider_pro_location_create, text = "Location Create")
} }
} }
@Composable @Composable
fun AddBtn(@DrawableRes icon: Int, text: String){ fun AddBtn(@DrawableRes icon: Int, text: String,onClick: (() -> Unit)? = {}){
Row (modifier = Modifier Row (modifier = Modifier
.fillMaxWidth().padding(24.dp), .fillMaxWidth().padding(24.dp).clickable {
onClick?.invoke()
},
verticalAlignment = Alignment.CenterVertically){ verticalAlignment = Alignment.CenterVertically){
Image( Image(
modifier = Modifier.size(40.dp), modifier = Modifier.size(40.dp),

View File

@@ -77,11 +77,13 @@ fun NavigationController(navController: NavHostController) {
fadeOut(animationSpec = tween(0)) fadeOut(animationSpec = tween(0))
}) { }) {
// 带底部导航栏的路由: // 带底部导航栏的路由:
listOf(NavigationItem.Home, listOf(
NavigationItem.Home,
NavigationItem.Street, NavigationItem.Street,
NavigationItem.Add, NavigationItem.Add,
NavigationItem.Message, NavigationItem.Message,
NavigationItem.Profile).forEach { item -> NavigationItem.Profile
).forEach { item ->
composable(route = item.route) { composable(route = item.route) {
ScaffoldWithNavigationBar(navController) { ScaffoldWithNavigationBar(navController) {
when (item) { when (item) {
@@ -98,65 +100,72 @@ fun NavigationController(navController: NavHostController) {
composable(route = "ProfileTimeline") { composable(route = "ProfileTimeline") {
GalleryPage() GalleryPage()
} }
composable(route="LocationDetail") { composable(route = "LocationDetail") {
Box( Box(
modifier = Modifier.padding(bottom = navigationBarHeight) modifier = Modifier.padding(bottom = navigationBarHeight)
) { ) {
LocationDetail() LocationDetail()
} }
} }
composable(route="OfficialPhoto") { composable(route = "OfficialPhoto") {
Box( Box(
modifier = Modifier.padding(bottom = navigationBarHeight) modifier = Modifier.padding(bottom = navigationBarHeight)
) { ) {
OfficialGalleryPage() OfficialGalleryPage()
} }
} }
composable(route="OfficialPhotographer") { composable(route = "OfficialPhotographer") {
OfficialPhotographer() OfficialPhotographer()
} }
composable(route="Post") { composable(route = "Post") {
Box( Box(
modifier = Modifier.padding(bottom = navigationBarHeight) modifier = Modifier.padding(bottom = navigationBarHeight)
) { ) {
PostPage() PostPage()
} }
} }
composable(route="ModificationList") { composable(route = "ModificationList") {
Box( Box(
modifier = Modifier.padding(bottom = navigationBarHeight) modifier = Modifier.padding(bottom = navigationBarHeight)
) { ) {
ModificationListScreen() ModificationListScreen()
} }
} }
composable(route="MyMessage") { composable(route = "MyMessage") {
Box( Box(
modifier = Modifier.padding(bottom = navigationBarHeight) modifier = Modifier.padding(bottom = navigationBarHeight)
) { ) {
NotificationsScreen() NotificationsScreen()
} }
} }
composable(route="Comments") { composable(route = "Comments") {
Box( Box(
modifier = Modifier.padding(navigationBarHeight) modifier = Modifier.padding(navigationBarHeight)
) { ) {
CommentsScreen() CommentsScreen()
} }
} }
composable(route="Likes") { composable(route = "Likes") {
Box( Box(
modifier = Modifier.padding(navigationBarHeight) modifier = Modifier.padding(navigationBarHeight)
) { ) {
LikePage() LikePage()
} }
} }
composable(route="Followers") { composable(route = "Followers") {
Box( Box(
modifier = Modifier.padding(navigationBarHeight) modifier = Modifier.padding(navigationBarHeight)
) { ) {
FollowerPage() FollowerPage()
} }
} }
composable(route = "NewPost") {
Box(
modifier = Modifier.padding(navigationBarHeight, top = 64.dp)
) {
NewPostScreen()
}
}
} }
} }
@@ -188,7 +197,8 @@ fun ScaffoldWithNavigationBar(
) )
Scaffold( Scaffold(
modifier = Modifier.statusBarsPadding(), modifier = Modifier.statusBarsPadding(),
bottomBar = { NavigationBar( bottomBar = {
NavigationBar(
modifier = Modifier.height(56.dp + navigationBarHeight), modifier = Modifier.height(56.dp + navigationBarHeight),
containerColor = Color.Black containerColor = Color.Black
) { ) {
@@ -242,7 +252,8 @@ fun ScaffoldWithNavigationBar(
) )
} }
} } }
}
) { innerPadding -> ) { innerPadding ->
Box( Box(
modifier = Modifier.padding(innerPadding) modifier = Modifier.padding(innerPadding)

View File

@@ -2,6 +2,7 @@ package com.aiosman.riderpro
import androidx.compose.foundation.Image import androidx.compose.foundation.Image
import androidx.compose.foundation.background import androidx.compose.foundation.background
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
@@ -16,6 +17,8 @@ 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.width
import androidx.compose.foundation.text.BasicTextField import androidx.compose.foundation.text.BasicTextField
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.ModalBottomSheet
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
@@ -39,7 +42,7 @@ fun NewPostScreen() {
Column( Column(
modifier = Modifier modifier = Modifier
.fillMaxSize() .fillMaxSize()
.background(Color.White)
) { ) {
NewPostTopBar() NewPostTopBar()
@@ -147,8 +150,25 @@ fun AddImageGrid() {
} }
@OptIn(ExperimentalMaterial3Api::class)
@Composable @Composable
fun AdditionalPostItem() { fun AdditionalPostItem() {
var isShowLocationModal by remember { mutableStateOf(false) }
fun onSelectLocationClick() {
isShowLocationModal = true
}
if (isShowLocationModal) {
ModalBottomSheet(
onDismissRequest = {
isShowLocationModal = false
},
containerColor = Color.White
) {
// Sheet content
SelectLocationModal()
}
}
Column( Column(
modifier = Modifier.fillMaxWidth() modifier = Modifier.fillMaxWidth()
) { ) {
@@ -156,6 +176,9 @@ fun AdditionalPostItem() {
modifier = Modifier modifier = Modifier
.fillMaxWidth() .fillMaxWidth()
.padding(vertical = 16.dp, horizontal = 24.dp) .padding(vertical = 16.dp, horizontal = 24.dp)
.clickable {
onSelectLocationClick()
}
) { ) {
Row( Row(
verticalAlignment = Alignment.CenterVertically verticalAlignment = Alignment.CenterVertically

View File

@@ -0,0 +1,139 @@
package com.aiosman.riderpro
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.foundation.lazy.LazyColumn
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.text.BasicTextField
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
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
@Preview
@Composable
fun SelectLocationModal() {
Column(
modifier = Modifier
.fillMaxSize()
.padding(horizontal = 24.dp)
) {
Box(
modifier = Modifier
.fillMaxWidth()
.padding(vertical = 10.dp)
) {
Text(
"Check In",
fontWeight = FontWeight.Bold,
modifier = Modifier.align(Alignment.Center),
fontSize = 16.sp
)
Text(
"Cancel",
modifier = Modifier.align(Alignment.CenterEnd),
fontSize = 16.sp
)
}
LocationSearchTextInput()
LazyColumn(
modifier = Modifier.weight(1f).padding(top = 28.dp)
) {
item{
repeat(20){
LocationItem()
}
}
}
}
}
@Composable
fun LocationSearchTextInput() {
var text by remember { mutableStateOf("") }
Box(
modifier = Modifier
.fillMaxWidth()
.padding(top = 16.dp)
.clip(shape = RoundedCornerShape(16.dp))
.background(Color(0xffF5F5F5))
) {
Row(
modifier = Modifier
.fillMaxWidth().padding(horizontal = 12.dp),
verticalAlignment = Alignment.CenterVertically
) {
Image(
painter = painterResource(id = R.drawable.rider_pro_search_location),
contentDescription = "Search",
modifier = Modifier.size(24.dp)
)
Spacer(modifier = Modifier.width(8.dp))
if (text.isEmpty()) {
Text(
"search",
modifier = Modifier.padding(vertical = 16.dp),
color = Color(0xffA0A0A0)
)
}
BasicTextField(
value = "",
onValueChange = {},
modifier = Modifier
.fillMaxWidth()
.padding(vertical = 16.dp)
)
}
}
}
@Composable
fun LocationItem(){
Box(
modifier = Modifier
.fillMaxWidth()
.padding(vertical = 16.dp)
) {
Row(
verticalAlignment = Alignment.CenterVertically,
) {
Column(
modifier = Modifier.weight(1f).padding(end = 16.dp)
) {
Text("Location Name")
Text("Address", color = Color(0xFF9a9a9a))
}
Image(
painter = painterResource(id = R.drawable.rider_pro_nav_next),
contentDescription = "Next",
modifier = Modifier.size(24.dp)
)
}
}
}

View File

@@ -0,0 +1,7 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:alpha="0.77" android:height="24dp" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp">
<path android:fillColor="#999999" android:fillType="evenOdd" android:pathData="M15,16.061l1.061,-1.061l4.243,4.243l-1.061,1.061z" android:strokeColor="#00000000" android:strokeWidth="1"/>
<path android:fillColor="#00000000" android:fillType="evenOdd" android:pathData="M10.5,10.5m-6.75,0a6.75,6.75 0,1 1,13.5 0a6.75,6.75 0,1 1,-13.5 0" android:strokeColor="#999999" android:strokeWidth="1.5"/>
</vector>