From 92ff2080d2027729c083ca465dd20bb91fba2c7a Mon Sep 17 00:00:00 2001 From: AllenTom Date: Mon, 15 Jul 2024 08:50:10 +0800 Subject: [PATCH] add:new post --- .../main/java/com/aiosman/riderpro/NewPost.kt | 204 ++++++++++++++++++ .../res/drawable/rider_pro_add_location.xml | 7 + app/src/main/res/drawable/rider_pro_close.xml | 12 ++ .../res/drawable/rider_pro_modification.xml | 9 + .../drawable/rider_pro_new_post_add_pic.xml | 5 + .../main/res/drawable/rider_pro_send_post.xml | 22 ++ 6 files changed, 259 insertions(+) create mode 100644 app/src/main/java/com/aiosman/riderpro/NewPost.kt create mode 100644 app/src/main/res/drawable/rider_pro_add_location.xml create mode 100644 app/src/main/res/drawable/rider_pro_close.xml create mode 100644 app/src/main/res/drawable/rider_pro_modification.xml create mode 100644 app/src/main/res/drawable/rider_pro_new_post_add_pic.xml create mode 100644 app/src/main/res/drawable/rider_pro_send_post.xml diff --git a/app/src/main/java/com/aiosman/riderpro/NewPost.kt b/app/src/main/java/com/aiosman/riderpro/NewPost.kt new file mode 100644 index 0000000..8b3841f --- /dev/null +++ b/app/src/main/java/com/aiosman/riderpro/NewPost.kt @@ -0,0 +1,204 @@ +package com.aiosman.riderpro + +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ExperimentalLayoutApi +import androidx.compose.foundation.layout.FlowRow +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.heightIn +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +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.drawBehind +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.PathEffect +import androidx.compose.ui.graphics.drawscope.Stroke +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp + +@Preview +@Composable +fun NewPostScreen() { + Column( + modifier = Modifier + .fillMaxSize() + .background(Color.White) + ) { + + NewPostTopBar() + NewPostTextField("What's on your mind?") + AddImageGrid() + AdditionalPostItem() + } +} + +@Composable +fun NewPostTopBar() { + Box( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 18.dp, vertical = 10.dp) + + ) { + Row( + modifier = Modifier.align(Alignment.CenterStart), + ) { + Image( + painter = painterResource(id = R.drawable.rider_pro_close), + contentDescription = "Back", + modifier = Modifier.size(24.dp) + ) + Spacer(modifier = Modifier.weight(1f)) + Image( + painter = painterResource(id = R.drawable.rider_pro_send_post), + contentDescription = "Send", + modifier = Modifier.size(24.dp) + ) + } + } + +} + +@Composable +fun NewPostTextField(hint: String) { + var text by remember { mutableStateOf("") } + + Box(modifier = Modifier.fillMaxWidth()) { + BasicTextField( + value = text, + onValueChange = { text = it }, + modifier = Modifier + .fillMaxWidth() + .heightIn(200.dp) + .padding(horizontal = 18.dp, vertical = 10.dp) + + ) + if (text.isEmpty()) { + Text( + text = hint, + color = Color.Gray, + modifier = Modifier.padding(horizontal = 18.dp, vertical = 10.dp) + ) + } + } +} + +@OptIn(ExperimentalLayoutApi::class) +@Composable +fun AddImageGrid() { + val stroke = Stroke( + width = 2f, + pathEffect = PathEffect.dashPathEffect(floatArrayOf(10f, 10f), 0f) + ) + Box( + modifier = Modifier.fillMaxWidth() + ) { + FlowRow( + modifier = Modifier + .fillMaxWidth() + .padding(18.dp), + verticalArrangement = Arrangement.spacedBy(8.dp), + horizontalArrangement = Arrangement.spacedBy(8.dp) + ) { + repeat(5) { + Image( + painter = painterResource(id = R.drawable.rider_pro_moment_demo_1), + contentDescription = "Add Image", + modifier = Modifier.size(110.dp), + contentScale = ContentScale.Crop + ) + } + Box( + modifier = Modifier + .size(110.dp) + .background(Color(0xFFFFFFFF)) + .drawBehind { + drawRoundRect(color = Color(0xFF999999), style = stroke) + }, + ) { + Image( + painter = painterResource(id = R.drawable.rider_pro_new_post_add_pic), + contentDescription = "Add Image", + modifier = Modifier + .size(48.dp) + .align(Alignment.Center) + ) + } + + } + } + +} + +@Composable +fun AdditionalPostItem() { + Column( + modifier = Modifier.fillMaxWidth() + ) { + Box( + modifier = Modifier + .fillMaxWidth() + .padding(vertical = 16.dp, horizontal = 24.dp) + ) { + Row( + verticalAlignment = Alignment.CenterVertically + ) { + Image( + painter = painterResource(id = R.drawable.rider_pro_add_location), + contentDescription = "Location", + modifier = Modifier.size(24.dp) + ) + Spacer(modifier = Modifier.width(12.dp)) + Text("Add Location", color = Color(0xFF333333)) + Spacer(modifier = Modifier.weight(1f)) + Image( + painter = painterResource(id = R.drawable.rider_pro_nav_next), + contentDescription = "Add Location", + modifier = Modifier.size(24.dp) + ) + } + + } + Box( + modifier = Modifier + .fillMaxWidth() + .padding(vertical = 16.dp, horizontal = 24.dp) + ) { + Row( + verticalAlignment = Alignment.CenterVertically + ) { + Image( + painter = painterResource(id = R.drawable.rider_pro_modification), + contentDescription = "Modification List", + modifier = Modifier.size(24.dp) + ) + Spacer(modifier = Modifier.width(12.dp)) + Text("Modification List", color = Color(0xFF333333)) + Spacer(modifier = Modifier.weight(1f)) + Image( + painter = painterResource(id = R.drawable.rider_pro_nav_next), + contentDescription = "Modification List", + modifier = Modifier.size(24.dp) + ) + } + + } + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/rider_pro_add_location.xml b/app/src/main/res/drawable/rider_pro_add_location.xml new file mode 100644 index 0000000..a281eb4 --- /dev/null +++ b/app/src/main/res/drawable/rider_pro_add_location.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/app/src/main/res/drawable/rider_pro_close.xml b/app/src/main/res/drawable/rider_pro_close.xml new file mode 100644 index 0000000..7ed4f20 --- /dev/null +++ b/app/src/main/res/drawable/rider_pro_close.xml @@ -0,0 +1,12 @@ + + + diff --git a/app/src/main/res/drawable/rider_pro_modification.xml b/app/src/main/res/drawable/rider_pro_modification.xml new file mode 100644 index 0000000..d5f2cef --- /dev/null +++ b/app/src/main/res/drawable/rider_pro_modification.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/app/src/main/res/drawable/rider_pro_new_post_add_pic.xml b/app/src/main/res/drawable/rider_pro_new_post_add_pic.xml new file mode 100644 index 0000000..b0825ec --- /dev/null +++ b/app/src/main/res/drawable/rider_pro_new_post_add_pic.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/src/main/res/drawable/rider_pro_send_post.xml b/app/src/main/res/drawable/rider_pro_send_post.xml new file mode 100644 index 0000000..d804dc0 --- /dev/null +++ b/app/src/main/res/drawable/rider_pro_send_post.xml @@ -0,0 +1,22 @@ + + + +