feat: 메인 홈
- 무료 콘텐츠 UI 추가
This commit is contained in:
@@ -72,6 +72,7 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>(FragmentHomeBinding::infl
|
|||||||
private lateinit var auditionAdapter: AuditionBannerAdapter
|
private lateinit var auditionAdapter: AuditionBannerAdapter
|
||||||
private lateinit var seriesDayOfWeekAdapter: HomeSeriesAdapter
|
private lateinit var seriesDayOfWeekAdapter: HomeSeriesAdapter
|
||||||
private lateinit var weelyChartAdapter: HomeWeeklyChartAdapter
|
private lateinit var weelyChartAdapter: HomeWeeklyChartAdapter
|
||||||
|
private lateinit var homeFreeContentAdapter: HomeContentAdapter
|
||||||
|
|
||||||
private val handler = Handler(Looper.getMainLooper())
|
private val handler = Handler(Looper.getMainLooper())
|
||||||
|
|
||||||
@@ -165,6 +166,7 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>(FragmentHomeBinding::infl
|
|||||||
setupAudition()
|
setupAudition()
|
||||||
setupSeriesDayOfWeek()
|
setupSeriesDayOfWeek()
|
||||||
setupWeelyChart()
|
setupWeelyChart()
|
||||||
|
setupFreeContent()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setupLiveView() {
|
private fun setupLiveView() {
|
||||||
@@ -856,6 +858,65 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>(FragmentHomeBinding::infl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun setupFreeContent() {
|
||||||
|
val spSectionTitle = SpannableString(binding.tvFreeContent.text)
|
||||||
|
spSectionTitle.setSpan(
|
||||||
|
ForegroundColorSpan(
|
||||||
|
ContextCompat.getColor(
|
||||||
|
requireContext(),
|
||||||
|
R.color.color_3bb9f1
|
||||||
|
)
|
||||||
|
),
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
|
||||||
|
)
|
||||||
|
binding.tvFreeContent.text = spSectionTitle
|
||||||
|
|
||||||
|
homeFreeContentAdapter = HomeContentAdapter {
|
||||||
|
startActivity(
|
||||||
|
Intent(requireContext(), AudioContentDetailActivity::class.java).apply {
|
||||||
|
putExtra(Constants.EXTRA_AUDIO_CONTENT_ID, it)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
val rvContent = binding.rvFreeContent
|
||||||
|
rvContent.layoutManager = LinearLayoutManager(context, RecyclerView.HORIZONTAL, false)
|
||||||
|
rvContent.addItemDecoration(object : RecyclerView.ItemDecoration() {
|
||||||
|
override fun getItemOffsets(
|
||||||
|
outRect: Rect,
|
||||||
|
view: View,
|
||||||
|
parent: RecyclerView,
|
||||||
|
state: RecyclerView.State
|
||||||
|
) {
|
||||||
|
super.getItemOffsets(outRect, view, parent, state)
|
||||||
|
outRect.top = 8f.dpToPx().toInt()
|
||||||
|
outRect.bottom = 8f.dpToPx().toInt()
|
||||||
|
|
||||||
|
val position = parent.getChildAdapterPosition(view)
|
||||||
|
|
||||||
|
if (position == 0 || position == 1) {
|
||||||
|
outRect.left = 0f.dpToPx().toInt()
|
||||||
|
} else {
|
||||||
|
outRect.left = 8f.dpToPx().toInt()
|
||||||
|
}
|
||||||
|
|
||||||
|
outRect.right = 8f.dpToPx().toInt()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
rvContent.adapter = homeFreeContentAdapter
|
||||||
|
|
||||||
|
viewModel.freeContentListLiveData.observe(viewLifecycleOwner) {
|
||||||
|
if (it.isNotEmpty()) {
|
||||||
|
binding.llFreeContent.visibility = View.VISIBLE
|
||||||
|
homeFreeContentAdapter.addItems(it)
|
||||||
|
} else {
|
||||||
|
binding.llFreeContent.visibility = View.GONE
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun bindData() {
|
private fun bindData() {
|
||||||
viewModel.isLoading.observe(viewLifecycleOwner) {
|
viewModel.isLoading.observe(viewLifecycleOwner) {
|
||||||
if (it) {
|
if (it) {
|
||||||
|
|||||||
@@ -100,6 +100,9 @@ class HomeViewModel(private val repository: HomeRepository) : BaseViewModel() {
|
|||||||
_auditionListLiveData.value = data.auditionList
|
_auditionListLiveData.value = data.auditionList
|
||||||
_dayOfWeekSeriesListLiveData.value = data.dayOfWeekSeriesList
|
_dayOfWeekSeriesListLiveData.value = data.dayOfWeekSeriesList
|
||||||
_contentRankingLiveData.value = data.contentRanking
|
_contentRankingLiveData.value = data.contentRanking
|
||||||
|
_freeContentListLiveData.value = data.freeContentList
|
||||||
|
_curationListLiveData.value = data.curationList
|
||||||
|
_recommendChannelListLiveData.value = data.recommendChannelList
|
||||||
} else {
|
} else {
|
||||||
if (it.message != null) {
|
if (it.message != null) {
|
||||||
_toastLiveData.postValue(it.message)
|
_toastLiveData.postValue(it.message)
|
||||||
|
|||||||
Reference in New Issue
Block a user