diff --git a/presentation/src/main/kotlin/ac/dnd/mour/android/presentation/ui/main/home/history/detail/HistoryDetailItem.kt b/presentation/src/main/kotlin/ac/dnd/mour/android/presentation/ui/main/home/history/detail/HistoryDetailItem.kt
index 4604ebd9..0bb5f7b9 100644
--- a/presentation/src/main/kotlin/ac/dnd/mour/android/presentation/ui/main/home/history/detail/HistoryDetailItem.kt
+++ b/presentation/src/main/kotlin/ac/dnd/mour/android/presentation/ui/main/home/history/detail/HistoryDetailItem.kt
@@ -8,6 +8,7 @@ import ac.dnd.mour.android.presentation.common.theme.Caption2
import ac.dnd.mour.android.presentation.common.theme.Gray000
import ac.dnd.mour.android.presentation.common.theme.Gray200
import ac.dnd.mour.android.presentation.common.theme.Gray600
+import ac.dnd.mour.android.presentation.common.theme.Gray700
import ac.dnd.mour.android.presentation.common.theme.Gray800
import ac.dnd.mour.android.presentation.common.theme.Headline3
import ac.dnd.mour.android.presentation.common.theme.Primary1
@@ -28,11 +29,11 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width
-import androidx.compose.material.Card
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
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.platform.LocalConfiguration
import androidx.compose.ui.res.painterResource
@@ -40,8 +41,8 @@ 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 java.text.DecimalFormat
import kotlinx.datetime.LocalDate
+import java.text.DecimalFormat
@Composable
fun HistoryDetailItem(
@@ -50,12 +51,13 @@ fun HistoryDetailItem(
) {
val currentViewWidth = LocalConfiguration.current.screenWidthDp.dp
- Card(
- shape = Shapes.medium,
- backgroundColor = Gray000,
- modifier = Modifier.clickable {
- onClick(relatedHeart)
- }
+ Box(
+ modifier = Modifier
+ .clip(Shapes.medium)
+ .background(Gray000)
+ .clickable {
+ onClick(relatedHeart)
+ }
) {
Box(
modifier = Modifier
@@ -109,16 +111,18 @@ fun HistoryDetailItem(
fontWeight = FontWeight.Normal
)
if (measureTextWidth(relatedHeart.memo, memeStyle) <= currentViewWidth - 80.dp) {
- Row(verticalAlignment = Alignment.CenterVertically) {
- Image(
- painter = painterResource(R.drawable.ic_board),
- contentDescription = null
- )
- Spacer(modifier = Modifier.width(6.dp))
- Text(
- text = relatedHeart.memo,
- style = memeStyle
- )
+ if (relatedHeart.memo.isNotEmpty()) {
+ Row(verticalAlignment = Alignment.CenterVertically) {
+ Image(
+ painter = painterResource(R.drawable.ic_board),
+ contentDescription = null
+ )
+ Spacer(modifier = Modifier.width(6.dp))
+ Text(
+ text = relatedHeart.memo,
+ style = memeStyle
+ )
+ }
}
}
Spacer(modifier = Modifier.height(6.dp))
@@ -138,7 +142,7 @@ fun HistoryDetailItem(
Text(
text = tag,
style = Caption2.merge(
- color = Gray600,
+ color = Gray700,
fontWeight = FontWeight.Medium
),
lineHeight = 18.sp
diff --git a/presentation/src/main/kotlin/ac/dnd/mour/android/presentation/ui/main/home/history/detail/HistoryDetailPageScreen.kt b/presentation/src/main/kotlin/ac/dnd/mour/android/presentation/ui/main/home/history/detail/HistoryDetailPageScreen.kt
index 455aa190..9a9bd4c9 100644
--- a/presentation/src/main/kotlin/ac/dnd/mour/android/presentation/ui/main/home/history/detail/HistoryDetailPageScreen.kt
+++ b/presentation/src/main/kotlin/ac/dnd/mour/android/presentation/ui/main/home/history/detail/HistoryDetailPageScreen.kt
@@ -8,6 +8,7 @@ import ac.dnd.mour.android.presentation.common.theme.Gray400
import ac.dnd.mour.android.presentation.common.theme.Gray500
import ac.dnd.mour.android.presentation.common.theme.Gray600
import ac.dnd.mour.android.presentation.common.theme.Gray700
+import ac.dnd.mour.android.presentation.common.theme.Gray800
import ac.dnd.mour.android.presentation.common.theme.Primary4
import ac.dnd.mour.android.presentation.common.theme.Shapes
import ac.dnd.mour.android.presentation.common.theme.Space24
@@ -119,13 +120,13 @@ fun HistoryDetailPageScreen(
Text(
text = viewSortType.typeName,
style = Body1.merge(
- color = Gray700,
+ color = Gray800,
fontWeight = FontWeight.Medium
)
)
Spacer(modifier = Modifier.width(2.dp))
Image(
- painter = painterResource(R.drawable.ic_chevron_down),
+ painter = painterResource(R.drawable.ic_chevron_down_history),
contentDescription = null,
modifier = Modifier.size(16.dp)
)
diff --git a/presentation/src/main/kotlin/ac/dnd/mour/android/presentation/ui/main/home/history/detail/growth/HistoryDetailGrowthScreen.kt b/presentation/src/main/kotlin/ac/dnd/mour/android/presentation/ui/main/home/history/detail/growth/HistoryDetailGrowthScreen.kt
index fb3c2769..ba4a1b01 100644
--- a/presentation/src/main/kotlin/ac/dnd/mour/android/presentation/ui/main/home/history/detail/growth/HistoryDetailGrowthScreen.kt
+++ b/presentation/src/main/kotlin/ac/dnd/mour/android/presentation/ui/main/home/history/detail/growth/HistoryDetailGrowthScreen.kt
@@ -8,6 +8,7 @@ import ac.dnd.mour.android.presentation.common.theme.Gray200
import ac.dnd.mour.android.presentation.common.theme.Gray600
import ac.dnd.mour.android.presentation.common.theme.Gray700
import ac.dnd.mour.android.presentation.common.theme.Gray800
+import ac.dnd.mour.android.presentation.common.theme.Gray900
import ac.dnd.mour.android.presentation.common.theme.Headline1
import ac.dnd.mour.android.presentation.common.theme.Headline3
import ac.dnd.mour.android.presentation.common.theme.Shapes
@@ -21,7 +22,6 @@ import ac.dnd.mour.android.presentation.ui.main.rememberApplicationState
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
-import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
@@ -32,9 +32,9 @@ import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.layout.wrapContentHeight
-import androidx.compose.foundation.lazy.LazyColumn
-import androidx.compose.foundation.lazy.items
+import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.RoundedCornerShape
+import androidx.compose.foundation.verticalScroll
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.rememberCoroutineScope
@@ -57,12 +57,13 @@ fun HistoryDetailGrowthScreen(
handler: CoroutineExceptionHandler
) {
val scope = rememberCoroutineScope()
-
+ val scrollState = rememberScrollState()
Column(
horizontalAlignment = Alignment.CenterHorizontally,
modifier = Modifier
.background(Gray200)
.padding(horizontal = 20.dp)
+ .verticalScroll(scrollState)
) {
Box(
modifier = Modifier
@@ -84,7 +85,7 @@ fun HistoryDetailGrowthScreen(
Text(
text = "성장 단계",
style = Headline1.merge(
- color = Gray800,
+ color = Gray900,
fontWeight = FontWeight.SemiBold
)
)
@@ -92,105 +93,101 @@ fun HistoryDetailGrowthScreen(
Text(
text = "총 6단계",
style = Body1.merge(
- color = Gray600,
+ color = Gray700,
fontWeight = FontWeight.Normal
)
)
Spacer(modifier = Modifier.height(33.dp))
- LazyColumn(
- verticalArrangement = Arrangement.spacedBy(5.dp)
- ) {
- items(HistoryDetailGrowthType.entries) { type ->
- Box(
+ HistoryDetailGrowthType.entries.forEach { type ->
+ Box(
+ modifier = Modifier
+ .background(Color.Transparent)
+ .height(102.dp)
+ ) {
+ Row(
modifier = Modifier
- .background(Color.Transparent)
- .height(102.dp)
+ .padding(vertical = 7.dp)
+ .align(Alignment.Center)
+ .background(
+ color = Gray000,
+ shape = Shapes.large
+ )
+ .padding(20.dp)
+ .wrapContentHeight()
+ .fillMaxWidth(),
+ verticalAlignment = Alignment.CenterVertically
) {
- Row(
+ Box(
modifier = Modifier
- .padding(vertical = 7.dp)
- .align(Alignment.Center)
.background(
- color = Gray000,
- shape = Shapes.large
+ color = Gray200,
+ shape = RoundedCornerShape(6.dp)
)
- .padding(20.dp)
- .wrapContentHeight()
- .fillMaxWidth(),
- verticalAlignment = Alignment.CenterVertically
) {
- Box(
- modifier = Modifier
- .background(
- color = Gray200,
- shape = RoundedCornerShape(6.dp)
- )
- ) {
- Image(
- painter = painterResource(type.iconImageResource),
- contentDescription = null,
- contentScale = ContentScale.Crop
- )
- }
- Spacer(modifier = Modifier.width(12.dp))
- Column {
- Text(
- text = type.typeName,
- style = Headline3.merge(
- color = Gray800,
- fontWeight = FontWeight.SemiBold
- )
+ Image(
+ painter = painterResource(type.iconImageResource),
+ contentDescription = null,
+ contentScale = ContentScale.Crop
+ )
+ }
+ Spacer(modifier = Modifier.width(12.dp))
+ Column {
+ Text(
+ text = type.typeName,
+ style = Headline3.merge(
+ color = Gray800,
+ fontWeight = FontWeight.SemiBold
)
- Spacer(modifier = Modifier.height(2.dp))
- Text(
- text = HistoryDetailGrowthType.getTypeString(type),
- style = Body1.merge(
- color = Gray600,
- fontWeight = FontWeight.Normal
- )
+ )
+ Spacer(modifier = Modifier.height(2.dp))
+ Text(
+ text = HistoryDetailGrowthType.getTypeString(type),
+ style = Body1.merge(
+ color = Gray600,
+ fontWeight = FontWeight.Normal
)
- }
- Box(
- modifier = Modifier.fillMaxSize()
- ) {
- Text(
- text = "Lv.${type.level}",
- modifier = Modifier.align(Alignment.BottomEnd),
- style = Body2.merge(
- color = Gray600,
- fontWeight = FontWeight.Normal
- )
+ )
+ }
+ Box(
+ modifier = Modifier.fillMaxSize()
+ ) {
+ Text(
+ text = "Lv.${type.level}",
+ modifier = Modifier.align(Alignment.BottomEnd),
+ style = Body2.merge(
+ color = Gray600,
+ fontWeight = FontWeight.Normal
)
- }
+ )
}
+ }
- if (model.currentType == type) {
- Box(
- modifier = Modifier
- .padding(end = 20.dp)
- .align(Alignment.TopEnd)
- .background(
- color = Gray700,
- shape = RoundedCornerShape(100.dp)
- )
- .padding(
- horizontal = 12.dp,
- vertical = 5.dp
- )
- ) {
- Text(
- text = "현재 달성",
- style = Body2.merge(
- color = Gray000,
- fontWeight = FontWeight.SemiBold
- )
+ if (model.currentType == type) {
+ Box(
+ modifier = Modifier
+ .padding(end = 20.dp)
+ .align(Alignment.TopEnd)
+ .background(
+ color = Gray700,
+ shape = RoundedCornerShape(100.dp)
+ )
+ .padding(
+ horizontal = 12.dp,
+ vertical = 5.dp
+ )
+ ) {
+ Text(
+ text = "현재 달성",
+ style = Body2.merge(
+ color = Gray000,
+ fontWeight = FontWeight.SemiBold
)
- }
+ )
}
}
}
}
- Spacer(modifier = Modifier.height(31.dp))
+ Spacer(modifier = Modifier.height(61.dp))
}
LaunchedEffectWithLifecycle(event, handler) {
diff --git a/presentation/src/main/kotlin/ac/dnd/mour/android/presentation/ui/main/home/history/detail/information/HistoryDetailInformationScreen.kt b/presentation/src/main/kotlin/ac/dnd/mour/android/presentation/ui/main/home/history/detail/information/HistoryDetailInformationScreen.kt
index dbe3f198..af775e25 100644
--- a/presentation/src/main/kotlin/ac/dnd/mour/android/presentation/ui/main/home/history/detail/information/HistoryDetailInformationScreen.kt
+++ b/presentation/src/main/kotlin/ac/dnd/mour/android/presentation/ui/main/home/history/detail/information/HistoryDetailInformationScreen.kt
@@ -7,8 +7,8 @@ import ac.dnd.mour.android.presentation.common.theme.Body1
import ac.dnd.mour.android.presentation.common.theme.Caption2
import ac.dnd.mour.android.presentation.common.theme.Gray000
import ac.dnd.mour.android.presentation.common.theme.Gray200
-import ac.dnd.mour.android.presentation.common.theme.Gray300
-import ac.dnd.mour.android.presentation.common.theme.Gray500
+import ac.dnd.mour.android.presentation.common.theme.Gray400
+import ac.dnd.mour.android.presentation.common.theme.Gray600
import ac.dnd.mour.android.presentation.common.theme.Gray700
import ac.dnd.mour.android.presentation.common.theme.Gray800
import ac.dnd.mour.android.presentation.common.theme.Headline3
@@ -49,6 +49,7 @@ 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 androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import coil.compose.AsyncImage
@@ -118,7 +119,7 @@ private fun HistoryDetailInformationScreen(
.padding(Space8)
) {
Image(
- painter = painterResource(R.drawable.ic_close),
+ painter = painterResource(R.drawable.ic_close_rounded),
contentDescription = null,
modifier = Modifier
.align(Alignment.CenterEnd)
@@ -155,7 +156,7 @@ private fun HistoryDetailInformationScreen(
Text(
text = model.relationDetail.name,
style = Headline3.merge(
- color = Gray700,
+ color = Gray800,
fontWeight = FontWeight.SemiBold
)
)
@@ -163,7 +164,7 @@ private fun HistoryDetailInformationScreen(
Text(
text = "•",
style = Headline3.merge(
- color = Gray700,
+ color = Gray800,
fontWeight = FontWeight.SemiBold
)
)
@@ -171,7 +172,7 @@ private fun HistoryDetailInformationScreen(
Text(
text = model.relationDetail.group.name,
style = Headline3.merge(
- color = Gray700,
+ color = Gray800,
fontWeight = FontWeight.SemiBold
)
)
@@ -183,7 +184,7 @@ private fun HistoryDetailInformationScreen(
.border(
shape = Shapes.medium,
width = 1.dp,
- color = Gray300
+ color = Gray400
)
.clickable {
onResult()
@@ -194,40 +195,45 @@ private fun HistoryDetailInformationScreen(
)
) {
Image(
- painter = painterResource(R.drawable.ic_edit),
+ painter = painterResource(R.drawable.ic_history_edit),
contentDescription = null
)
- Spacer(modifier = Modifier.height(2.dp))
+ Spacer(modifier = Modifier.width(2.dp))
Text(
text = "편집",
+ fontSize = 14.sp,
style = Caption2.merge(
- color = Gray500,
+ color = Gray600,
fontWeight = FontWeight.Medium
)
)
}
Spacer(modifier = Modifier.height(24.dp))
- Box(
- modifier = Modifier
- .fillMaxWidth()
- .wrapContentHeight()
- .background(
- color = Gray200,
- shape = Shapes.large
- )
- ) {
- Text(
+ if (model.relationDetail.memo.isEmpty()) {
+ Spacer(modifier = Modifier.height(103.dp))
+ } else {
+ Box(
modifier = Modifier
- .padding(20.dp)
.fillMaxWidth()
- .wrapContentHeight(),
- text = model.relationDetail.memo,
- minLines = 3,
- style = Body1.merge(
- color = Gray800,
- fontWeight = FontWeight.Normal
+ .wrapContentHeight()
+ .background(
+ color = Gray200,
+ shape = Shapes.large
+ )
+ ) {
+ Text(
+ modifier = Modifier
+ .padding(20.dp)
+ .fillMaxWidth()
+ .wrapContentHeight(),
+ text = model.relationDetail.memo,
+ minLines = 3,
+ style = Body1.merge(
+ color = Gray800,
+ fontWeight = FontWeight.Normal
+ )
)
- )
+ }
}
Spacer(modifier = Modifier.height(30.dp))
}
@@ -251,7 +257,7 @@ private fun HistoryDetailInformationScreenPreview() {
id = 0L,
name = "김진우",
imageUrl = "",
- memo = "무르는 경사비 관리앱으로 사용자가 다양한 개인적인 축하 상황에 대해 금전적 기여를 쉽게 할 수 있게 돕는 모바일 애플리케이션입니다",
+ memo = "",
group = RelationDetailGroup(
id = 0,
name = "친척"
diff --git a/presentation/src/main/res/drawable/ic_chevron_down_history.xml b/presentation/src/main/res/drawable/ic_chevron_down_history.xml
new file mode 100644
index 00000000..29cf21f1
--- /dev/null
+++ b/presentation/src/main/res/drawable/ic_chevron_down_history.xml
@@ -0,0 +1,13 @@
+
+
+
diff --git a/presentation/src/main/res/drawable/ic_property_lv_4.xml b/presentation/src/main/res/drawable/ic_property_lv_4.xml
index 3b1bb8c6..81cc3a55 100644
--- a/presentation/src/main/res/drawable/ic_property_lv_4.xml
+++ b/presentation/src/main/res/drawable/ic_property_lv_4.xml
@@ -7,100 +7,164 @@
-
+
+ android:color="#FFFC60C1"
+ android:offset="0.01" />
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+ android:color="#FFFC60C1"
+ android:offset="0.01" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/presentation/src/main/res/drawable/ic_property_lv_5.xml b/presentation/src/main/res/drawable/ic_property_lv_5.xml
index 81cc3a55..3b1bb8c6 100644
--- a/presentation/src/main/res/drawable/ic_property_lv_5.xml
+++ b/presentation/src/main/res/drawable/ic_property_lv_5.xml
@@ -7,164 +7,100 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ android:color="#FFB3B3B3"
+ android:offset="1" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+ android:color="#FFE1E1E1"
+ android:offset="1" />