From cd8d2c255cb9abb8de680f10fd16e5ca52989761 Mon Sep 17 00:00:00 2001 From: klaus Date: Mon, 17 Nov 2025 21:32:03 +0900 Subject: [PATCH] =?UTF-8?q?feat(series-main):=20=EC=B6=94=EC=B2=9C?= =?UTF-8?q?=EC=8B=9C=EB=A6=AC=EC=A6=88,=20=EC=9A=94=EC=9D=BC=EB=B3=84=20?= =?UTF-8?q?=EC=8B=9C=EB=A6=AC=EC=A6=88=20=EB=8F=99=EC=9D=BC=ED=95=9C=20?= =?UTF-8?q?=EB=A0=88=EC=9D=B4=EC=95=84=EC=9B=83=EC=9D=84=20=EC=82=AC?= =?UTF-8?q?=EC=9A=A9=ED=95=98=EC=97=AC=20=EC=95=84=EC=9D=B4=ED=85=9C=20?= =?UTF-8?q?=ED=81=AC=EA=B8=B0=EC=99=80=20=EB=82=B4=EC=9A=A9=EC=9D=B4=20?= =?UTF-8?q?=EB=8F=99=EC=9D=BC=ED=95=98=EA=B2=8C=20=ED=91=9C=EC=8B=9C?= =?UTF-8?q?=EB=90=98=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../by_genre/SeriesMainByGenreFragment.kt | 9 +++--- .../SeriesMainDayOfWeekFragment.kt | 9 +++--- .../main/home/SeriesMainHomeFragment.kt | 12 +++---- .../sodalive/home/HomeSeriesAdapter.kt | 32 +++++++++---------- 4 files changed, 29 insertions(+), 33 deletions(-) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/by_genre/SeriesMainByGenreFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/by_genre/SeriesMainByGenreFragment.kt index 688eeb3a..8f511ddd 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/by_genre/SeriesMainByGenreFragment.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/by_genre/SeriesMainByGenreFragment.kt @@ -16,6 +16,7 @@ import kr.co.vividnext.sodalive.common.GridSpacingItemDecoration import kr.co.vividnext.sodalive.common.LoadingDialog import kr.co.vividnext.sodalive.databinding.FragmentSeriesMainByGenreBinding import kr.co.vividnext.sodalive.extensions.dpToPx +import kr.co.vividnext.sodalive.home.HomeSeriesAdapter import org.koin.android.ext.android.inject import kotlin.math.roundToInt @@ -25,7 +26,7 @@ class SeriesMainByGenreFragment : BaseFragment private val viewModel: SeriesMainByGenreViewModel by inject() private lateinit var loadingDialog: LoadingDialog - private lateinit var seriesAdapter: SeriesListAdapter + private lateinit var seriesAdapter: HomeSeriesAdapter private lateinit var genreAdapter: GenreAdapter override fun onViewCreated(view: View, savedInstanceState: Bundle?) { @@ -89,7 +90,7 @@ class SeriesMainByGenreFragment : BaseFragment } private fun setupSeriesView() { - seriesAdapter = SeriesListAdapter( + seriesAdapter = HomeSeriesAdapter( itemWidth = ((screenWidth - 24f.dpToPx() * 2 - 16f.dpToPx()) / 2f).roundToInt(), onClickItem = { startActivity( @@ -100,9 +101,7 @@ class SeriesMainByGenreFragment : BaseFragment putExtra(Constants.EXTRA_SERIES_ID, it) } ) - }, - onClickCreator = {}, - isVisibleCreator = false + } ) val spanCount = 2 diff --git a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/day_of_week/SeriesMainDayOfWeekFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/day_of_week/SeriesMainDayOfWeekFragment.kt index 9bc206f2..81874824 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/day_of_week/SeriesMainDayOfWeekFragment.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/day_of_week/SeriesMainDayOfWeekFragment.kt @@ -17,6 +17,7 @@ import kr.co.vividnext.sodalive.common.LoadingDialog import kr.co.vividnext.sodalive.databinding.FragmentSeriesMainDayOfWeekBinding import kr.co.vividnext.sodalive.extensions.dpToPx import kr.co.vividnext.sodalive.home.DayOfWeekAdapter +import kr.co.vividnext.sodalive.home.HomeSeriesAdapter import kr.co.vividnext.sodalive.home.SeriesPublishedDaysOfWeek import org.koin.android.ext.android.inject import java.util.Calendar @@ -28,7 +29,7 @@ class SeriesMainDayOfWeekFragment : BaseFragment( private lateinit var bannerAdapter: SeriesBannerAdapter private lateinit var completedAdapter: HomeSeriesAdapter - private lateinit var recommendAdapter: SeriesListAdapter + private lateinit var recommendAdapter: HomeSeriesAdapter override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) @@ -115,6 +116,7 @@ class SeriesMainHomeFragment : BaseFragment( } } + @OptIn(UnstableApi::class) private fun setupCompletedSeriesView() { completedAdapter = HomeSeriesAdapter { if (SharedPreferenceManager.token.isNotBlank()) { @@ -175,7 +177,7 @@ class SeriesMainHomeFragment : BaseFragment( } private fun setupRecommendSeriesView() { - recommendAdapter = SeriesListAdapter( + recommendAdapter = HomeSeriesAdapter( itemWidth = ((screenWidth - 24f.dpToPx() * 2 - 16f.dpToPx()) / 2f).roundToInt(), onClickItem = { startActivity( @@ -186,9 +188,7 @@ class SeriesMainHomeFragment : BaseFragment( putExtra(Constants.EXTRA_SERIES_ID, it) } ) - }, - onClickCreator = {}, - isVisibleCreator = false + } ) val spanCount = 2 diff --git a/app/src/main/java/kr/co/vividnext/sodalive/home/HomeSeriesAdapter.kt b/app/src/main/java/kr/co/vividnext/sodalive/home/HomeSeriesAdapter.kt index 524a4f06..e60b1fcf 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/home/HomeSeriesAdapter.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/home/HomeSeriesAdapter.kt @@ -1,41 +1,40 @@ package kr.co.vividnext.sodalive.home import android.annotation.SuppressLint -import android.content.Context import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView -import com.bumptech.glide.Glide -import com.bumptech.glide.load.resource.bitmap.CenterCrop -import com.bumptech.glide.load.resource.bitmap.RoundedCorners -import com.bumptech.glide.request.RequestOptions +import coil.load +import coil.transform.RoundedCornersTransformation +import kr.co.vividnext.sodalive.R import kr.co.vividnext.sodalive.audio_content.series.GetSeriesListResponse import kr.co.vividnext.sodalive.databinding.ItemHomeSeriesBinding import kr.co.vividnext.sodalive.extensions.dpToPx class HomeSeriesAdapter( + private val itemWidth: Int? = null, private val onClickItem: (Long) -> Unit ) : RecyclerView.Adapter() { val items = mutableListOf() inner class ViewHolder( - private val context: Context, private val binding: ItemHomeSeriesBinding ) : RecyclerView.ViewHolder(binding.root) { @SuppressLint("SetTextI18n") fun bind(item: GetSeriesListResponse.SeriesListItem) { - Glide - .with(context) - .load(item.coverImage) - .apply( - RequestOptions().transform( - CenterCrop(), - RoundedCorners(16f.dpToPx().toInt()) - ) - ) - .into(binding.ivCover) + binding.ivCover.load(item.coverImage) { + placeholder(R.drawable.bg_placeholder) + transformations(RoundedCornersTransformation(16f.dpToPx())) + + if (itemWidth != null) { + val lp = binding.ivCover.layoutParams + lp.width = itemWidth + lp.height = itemWidth * 432 / 306 + binding.ivCover.layoutParams = lp + } + } binding.tvTitle.text = item.title binding.tvNickname.text = item.creator.nickname @@ -63,7 +62,6 @@ class HomeSeriesAdapter( } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ViewHolder( - parent.context, ItemHomeSeriesBinding.inflate( LayoutInflater.from(parent.context), parent,