feat(content): 시리즈 성인 배지를 추가한다
This commit is contained in:
@@ -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
|
||||
)
|
||||
}
|
||||
|
||||
@@ -19,6 +19,19 @@
|
||||
android:contentDescription="@null"
|
||||
android:scaleType="centerCrop" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_series_content_adult_badge"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:layout_gravity="top|end"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:background="@drawable/bg_creator_channel_live_adult_badge"
|
||||
android:contentDescription="@null"
|
||||
android:padding="4dp"
|
||||
android:src="@drawable/ic_new_shield_large"
|
||||
android:visibility="gone" />
|
||||
|
||||
<include
|
||||
android:id="@+id/include_series_original_tag"
|
||||
layout="@layout/view_series_original_tag"
|
||||
|
||||
Reference in New Issue
Block a user