콘텐츠 상세

- 이전화/다음화 버튼 추가
This commit is contained in:
klaus 2025-04-01 20:58:21 +09:00
parent bddf7b750b
commit 62b15609ff
4 changed files with 201 additions and 2 deletions

View File

@ -26,6 +26,7 @@ import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import coil.load import coil.load
import coil.transform.CircleCropTransformation import coil.transform.CircleCropTransformation
import coil.transform.RoundedCornersTransformation
import com.bumptech.glide.Glide import com.bumptech.glide.Glide
import com.bumptech.glide.request.RequestOptions import com.bumptech.glide.request.RequestOptions
import com.google.gson.Gson import com.google.gson.Gson
@ -417,6 +418,7 @@ class AudioContentDetailActivity : BaseActivity<ActivityAudioContentDetailBindin
setupInfoArea(it) setupInfoArea(it)
setupPurchaseButton(it) setupPurchaseButton(it)
setupCommentArea(it) setupCommentArea(it)
setupPreviousNextContentArea(it.previousContent, it.nextContent)
setupCreatorOtherContentListArea(it.creatorOtherContentList) setupCreatorOtherContentListArea(it.creatorOtherContentList)
setupSameThemeOtherContentList(it.sameThemeOtherContentList) setupSameThemeOtherContentList(it.sameThemeOtherContentList)
} }
@ -464,6 +466,78 @@ class AudioContentDetailActivity : BaseActivity<ActivityAudioContentDetailBindin
} }
} }
private fun setupPreviousNextContentArea(
previousContent: OtherContentResponse?,
nextContent: OtherContentResponse?
) {
binding.llPreviousNextContent.visibility = if (
previousContent != null ||
nextContent != null
) {
View.VISIBLE
} else {
View.GONE
}
if (previousContent != null) {
binding.llPreviousContent.visibility = View.VISIBLE
binding.viewPreviousNone.visibility = View.GONE
binding.ivPreviousCover.load(previousContent.coverUrl) {
crossfade(true)
placeholder(R.drawable.bg_placeholder)
transformations(RoundedCornersTransformation(5.3f.dpToPx()))
}
binding.tvPreviousTitle.text = previousContent.title
binding.llPreviousContent.setOnClickListener {
startActivity(
Intent(
applicationContext,
AudioContentDetailActivity::class.java
).apply {
putExtra(Constants.EXTRA_AUDIO_CONTENT_ID, previousContent.contentId)
addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)
}
)
}
} else {
binding.viewPreviousNone.visibility = View.VISIBLE
binding.llPreviousContent.visibility = View.GONE
}
if (nextContent != null) {
binding.llNextContent.visibility = View.VISIBLE
binding.viewNextNone.visibility = View.GONE
binding.ivNextCover.load(nextContent.coverUrl) {
crossfade(true)
placeholder(R.drawable.bg_placeholder)
transformations(RoundedCornersTransformation(5.3f.dpToPx()))
}
binding.tvNextTitle.text = nextContent.title
binding.llNextContent.setOnClickListener {
startActivity(
Intent(
applicationContext,
AudioContentDetailActivity::class.java
).apply {
putExtra(Constants.EXTRA_AUDIO_CONTENT_ID, nextContent.contentId)
addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)
}
)
}
} else {
binding.viewNextNone.visibility = View.VISIBLE
binding.llNextContent.visibility = View.GONE
}
}
private fun setupCommentArea(response: GetAudioContentDetailResponse) { private fun setupCommentArea(response: GetAudioContentDetailResponse) {
if ( if (
response.isCommentAvailable && response.isCommentAvailable &&

View File

@ -39,7 +39,9 @@ data class GetAudioContentDetailResponse(
@SerializedName("commentCount") val commentCount: Int, @SerializedName("commentCount") val commentCount: Int,
@SerializedName("isPin") val isPin: Boolean, @SerializedName("isPin") val isPin: Boolean,
@SerializedName("isAvailablePin") val isAvailablePin: Boolean, @SerializedName("isAvailablePin") val isAvailablePin: Boolean,
@SerializedName("creator") val creator: AudioContentCreator @SerializedName("creator") val creator: AudioContentCreator,
@SerializedName("previousContent") val previousContent: OtherContentResponse?,
@SerializedName("nextContent") val nextContent: OtherContentResponse?
) )
@Keep @Keep

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/color_222222" />
<corners android:radius="5.3dp" />
<stroke
android:width="1dp"
android:color="@color/color_555555" />
</shape>

View File

@ -199,6 +199,121 @@
tools:src="@drawable/btn_player_repeat" /> tools:src="@drawable/btn_player_repeat" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
<LinearLayout
android:id="@+id/ll_previous_next_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="13.3dp"
android:layout_marginTop="13.3dp"
android:visibility="gone">
<View
android:id="@+id/view_previous_none"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="4dp"
android:layout_weight="1"
android:visibility="gone" />
<LinearLayout
android:id="@+id/ll_previous_content"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="4dp"
android:layout_weight="1"
android:background="@drawable/bg_round_corner_5_3_222222_555555"
android:padding="5.3dp"
android:visibility="gone">
<ImageView
android:id="@+id/iv_previous_cover"
android:layout_width="33.3dp"
android:layout_height="33.3dp"
android:contentDescription="@null" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="5.3dp"
android:orientation="vertical">
<TextView
android:id="@+id/tv_previous_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:fontFamily="@font/gmarket_sans_medium"
android:maxLines="2"
android:textColor="@color/color_d2d2d2"
android:textSize="11sp"
tools:ignore="TooManyViews"
tools:text="1화\n남편은 분명 성기사였다" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5.3dp"
android:fontFamily="@font/gmarket_sans_medium"
android:text="이전화"
android:textColor="@color/color_3bb9f1"
android:textSize="13.3sp" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/ll_next_content"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_weight="1"
android:background="@drawable/bg_round_corner_5_3_222222_555555"
android:padding="5.3dp"
android:visibility="gone">
<ImageView
android:id="@+id/iv_next_cover"
android:layout_width="33.3dp"
android:layout_height="33.3dp"
android:contentDescription="@null" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="5.3dp"
android:orientation="vertical">
<TextView
android:id="@+id/tv_next_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:fontFamily="@font/gmarket_sans_medium"
android:maxLines="2"
android:textColor="@color/color_d2d2d2"
android:textSize="11sp"
tools:ignore="TooManyViews"
tools:text="1화\n남편은 분명 성기사였다" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5.3dp"
android:fontFamily="@font/gmarket_sans_medium"
android:text="다음화"
android:textColor="@color/color_3bb9f1"
android:textSize="13.3sp" />
</LinearLayout>
</LinearLayout>
<View
android:id="@+id/view_next_none"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_weight="1"
android:visibility="gone" />
</LinearLayout>
<RelativeLayout <RelativeLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -478,9 +593,9 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:ellipsize="end" android:ellipsize="end"
android:maxLines="2"
android:fontFamily="@font/gmarket_sans_medium" android:fontFamily="@font/gmarket_sans_medium"
android:lineSpacingExtra="5dp" android:lineSpacingExtra="5dp"
android:maxLines="2"
android:textColor="@color/color_909090" android:textColor="@color/color_909090"
android:textSize="14sp" android:textSize="14sp"
tools:text="작품설명 작품설명 작품설명 작품설명 작품설명 작품설명 작품설명 작품설명 작품설명 작품설명 작품설명 작품설명 작품설명 작품설명 작품설명 작품설명" /> tools:text="작품설명 작품설명 작품설명 작품설명 작품설명 작품설명 작품설명 작품설명 작품설명 작품설명 작품설명 작품설명 작품설명 작품설명 작품설명 작품설명" />