diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/widget/SeriesContentCardView.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/widget/SeriesContentCardView.kt
index a84a7b6e..a21ecadc 100644
--- a/app/src/main/java/kr/co/vividnext/sodalive/v2/widget/SeriesContentCardView.kt
+++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/widget/SeriesContentCardView.kt
@@ -21,6 +21,7 @@ class SeriesContentCardView @JvmOverloads constructor(
private var thumbnailContainer: FrameLayout? = null
private var thumbnail: ImageView? = null
+ private var adultBadge: ImageView? = null
private var originalTag: View? = null
private var labelContainer: LinearLayout? = null
private var titleText: TextView? = null
@@ -34,6 +35,7 @@ class SeriesContentCardView @JvmOverloads constructor(
super.onFinishInflate()
thumbnailContainer = findViewById(R.id.fl_series_thumbnail_container)
thumbnail = findViewById(R.id.iv_series_content_thumbnail)
+ adultBadge = findViewById(R.id.iv_series_content_adult_badge)
originalTag = findViewById(R.id.include_series_original_tag)
labelContainer = findViewById(R.id.ll_series_content_label)
titleText = findViewById(R.id.tv_series_content_title)
@@ -59,6 +61,7 @@ class SeriesContentCardView @JvmOverloads constructor(
}
requireNotNull(titleText).setTextAppearance(size.titleStyleRes)
+ updateAdultBadge(size)
requireNotNull(creatorText).apply {
setTextAppearance(size.creatorStyleRes)
layoutParams = LayoutParams(
@@ -82,8 +85,44 @@ class SeriesContentCardView @JvmOverloads constructor(
requireNotNull(originalTag).visibility = if (isVisible) VISIBLE else GONE
}
+ fun setAdultVisible(isVisible: Boolean) {
+ requireNotNull(adultBadge).visibility = if (isVisible) VISIBLE else GONE
+ }
+
fun thumbnailView(): ImageView = requireNotNull(thumbnail)
+ private fun updateAdultBadge(size: SeriesContentCardSize) {
+ val spec = when (size) {
+ SeriesContentCardSize.Large -> AdultBadgeSpec(
+ sizeDp = 24,
+ marginDp = 8,
+ paddingDp = 4,
+ iconResId = R.drawable.ic_new_shield_large
+ )
+
+ SeriesContentCardSize.Small -> AdultBadgeSpec(
+ sizeDp = 18,
+ marginDp = 6,
+ paddingDp = 2,
+ iconResId = R.drawable.ic_new_shield_small
+ )
+ }
+ requireNotNull(adultBadge).apply {
+ layoutParams = FrameLayout.LayoutParams(spec.sizeDp.dpToPx(), spec.sizeDp.dpToPx()).apply {
+ gravity = android.view.Gravity.TOP or android.view.Gravity.END
+ topMargin = spec.marginDp.dpToPx()
+ marginEnd = spec.marginDp.dpToPx()
+ }
+ setPadding(
+ spec.paddingDp.dpToPx(),
+ spec.paddingDp.dpToPx(),
+ spec.paddingDp.dpToPx(),
+ spec.paddingDp.dpToPx()
+ )
+ setImageResource(spec.iconResId)
+ }
+ }
+
private fun setThumbnailOutline() {
requireNotNull(thumbnailContainer).apply {
clipToOutline = true
@@ -112,4 +151,11 @@ class SeriesContentCardView @JvmOverloads constructor(
private companion object {
const val TITLE_CREATOR_GAP_DP = 2
}
+
+ private data class AdultBadgeSpec(
+ val sizeDp: Int,
+ val marginDp: Int,
+ val paddingDp: Int,
+ val iconResId: Int
+ )
}
diff --git a/app/src/main/res/layout/view_series_content_card.xml b/app/src/main/res/layout/view_series_content_card.xml
index f9af1fb8..bcce0889 100644
--- a/app/src/main/res/layout/view_series_content_card.xml
+++ b/app/src/main/res/layout/view_series_content_card.xml
@@ -19,6 +19,19 @@
android:contentDescription="@null"
android:scaleType="centerCrop" />
+
+
()
+ return LayoutInflater.from(context).inflate(R.layout.view_series_content_card, null, false) as SeriesContentCardView
+ }
+
+ private fun SeriesContentCardView.adultBadge(): ImageView = findViewById(R.id.iv_series_content_adult_badge)
+
+ private fun Int.dpToPx(): Int {
+ val context = ApplicationProvider.getApplicationContext()
+ return (this * context.resources.displayMetrics.density).toInt()
+ }
+}