fix(character-detail): 캐릭터 정보 추가

- mbti, 나이, 성별 추가
This commit is contained in:
2025-09-05 17:43:04 +09:00
parent e39bdb6b03
commit cc3aca34f5
7 changed files with 122 additions and 0 deletions

View File

@@ -6,6 +6,7 @@ import android.graphics.Rect
import android.os.Bundle import android.os.Bundle
import android.text.TextUtils import android.text.TextUtils
import android.view.View import android.view.View
import androidx.core.content.ContextCompat
import androidx.core.net.toUri import androidx.core.net.toUri
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
@@ -115,6 +116,55 @@ class CharacterDetailFragment : BaseFragment<FragmentCharacterDetailBinding>(
binding.ivCharacterBackground.load(detail.imageUrl) { crossfade(true) } binding.ivCharacterBackground.load(detail.imageUrl) { crossfade(true) }
// 기본 정보 // 기본 정보
if (detail.gender != null) {
binding.tvGender.visibility = View.VISIBLE
binding.tvGender.text = detail.gender
if (detail.gender == "남성") {
binding.tvGender.setTextColor(
ContextCompat.getColor(
requireContext(),
R.color.color_3bb9f1
)
)
binding.tvGender.setBackgroundResource(R.drawable.bg_character_gender_male)
} else {
binding.tvGender.setTextColor(
ContextCompat.getColor(
requireContext(),
R.color.color_ff5c49
)
)
binding.tvGender.setBackgroundResource(R.drawable.bg_character_gender_female)
}
} else {
binding.tvGender.visibility = View.GONE
}
if (detail.age != null) {
binding.tvAge.visibility = View.VISIBLE
binding.tvAge.text = "${detail.age}"
} else {
binding.tvAge.visibility = View.GONE
}
if (detail.mbti != null) {
binding.tvMbti.visibility = View.VISIBLE
binding.tvMbti.text = detail.mbti
} else {
binding.tvMbti.visibility = View.GONE
}
binding.llGenderAgeMbti.visibility = if (
detail.mbti == null &&
detail.age == null &&
detail.gender == null
) {
View.GONE
} else {
View.VISIBLE
}
binding.tvCharacterName.text = detail.name binding.tvCharacterName.text = detail.name
binding.tvCharacterStatus.text = when (detail.characterType) { binding.tvCharacterStatus.text = when (detail.characterType) {
CharacterType.CLONE -> "Clone" CharacterType.CLONE -> "Clone"

View File

@@ -10,6 +10,8 @@ data class CharacterDetailResponse(
@SerializedName("name") val name: String, @SerializedName("name") val name: String,
@SerializedName("description") val description: String, @SerializedName("description") val description: String,
@SerializedName("mbti") val mbti: String?, @SerializedName("mbti") val mbti: String?,
@SerializedName("gender") val gender: String?,
@SerializedName("age") val age: Int?,
@SerializedName("imageUrl") val imageUrl: String, @SerializedName("imageUrl") val imageUrl: String,
@SerializedName("personalities") val personalities: CharacterPersonalityResponse?, @SerializedName("personalities") val personalities: CharacterPersonalityResponse?,
@SerializedName("backgrounds") val backgrounds: CharacterBackgroundResponse?, @SerializedName("backgrounds") val backgrounds: CharacterBackgroundResponse?,

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#263238" />
<corners android:radius="4dp" />
<stroke
android:width="1dp"
android:color="@color/color_ff5c49" />
</shape>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#263238" />
<corners android:radius="4dp" />
<stroke
android:width="1dp"
android:color="@color/color_3bb9f1" />
</shape>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#263238" />
<corners android:radius="4dp" />
<stroke
android:width="1dp"
android:color="@color/color_88ffffff" />
</shape>

View File

@@ -59,6 +59,48 @@
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"> app:layout_constraintStart_toStartOf="parent">
<LinearLayout
android:id="@+id/ll_gender_age_mbti"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_gender"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/pretendard_regular"
android:paddingHorizontal="7dp"
android:paddingVertical="3dp"
android:textSize="14sp" />
<TextView
android:id="@+id/tv_age"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="4dp"
android:background="@drawable/bg_character_info"
android:fontFamily="@font/pretendard_regular"
android:paddingHorizontal="7dp"
android:paddingVertical="3dp"
android:textColor="#B0BEC5"
android:textSize="14sp"
tools:text="20세" />
<TextView
android:id="@+id/tv_mbti"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/bg_character_info"
android:fontFamily="@font/pretendard_regular"
android:paddingHorizontal="7dp"
android:paddingVertical="3dp"
android:textColor="#B0BEC5"
android:textSize="14sp"
tools:text="ENFP" />
</LinearLayout>
<!-- 캐릭터명과 상태 --> <!-- 캐릭터명과 상태 -->
<LinearLayout <LinearLayout
android:id="@+id/ll_character_name_status" android:id="@+id/ll_character_name_status"

View File

@@ -129,6 +129,7 @@
<color name="color_333bb9f1">#333BB9F1</color> <color name="color_333bb9f1">#333BB9F1</color>
<color name="color_672bff">#672BFF</color> <color name="color_672bff">#672BFF</color>
<color name="color_ccffffff">#CCFFFFFF</color> <color name="color_ccffffff">#CCFFFFFF</color>
<color name="color_88ffffff">#88FFFFFF</color>
<color name="color_cc777777">#CC777777</color> <color name="color_cc777777">#CC777777</color>
<color name="color_ec3aa6">#EC3AA6</color> <color name="color_ec3aa6">#EC3AA6</color>
<color name="color_7849bc">#7849BC</color> <color name="color_7849bc">#7849BC</color>