feat(talk): 톡 탭에 Yandex 배너 헤더를 추가한다
This commit is contained in:
@@ -4,12 +4,15 @@ import android.graphics.Rect
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import android.widget.Toast
|
||||
import androidx.recyclerview.widget.ConcatAdapter
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import kr.co.vividnext.sodalive.BuildConfig
|
||||
import kr.co.vividnext.sodalive.R
|
||||
import kr.co.vividnext.sodalive.base.BaseFragment
|
||||
import kr.co.vividnext.sodalive.chat.talk.room.ChatRoomActivity
|
||||
import kr.co.vividnext.sodalive.common.LoadingDialog
|
||||
import kr.co.vividnext.sodalive.common.YandexInlineBannerHeaderAdapter
|
||||
import kr.co.vividnext.sodalive.databinding.FragmentTalkTabBinding
|
||||
import kr.co.vividnext.sodalive.extensions.dpToPx
|
||||
import org.koin.android.ext.android.inject
|
||||
@@ -20,6 +23,7 @@ class TalkTabFragment : BaseFragment<FragmentTalkTabBinding>(
|
||||
private val viewModel: TalkTabViewModel by inject()
|
||||
|
||||
private lateinit var adapter: TalkTabAdapter
|
||||
private lateinit var bannerAdapter: YandexInlineBannerHeaderAdapter
|
||||
|
||||
private lateinit var loadingDialog: LoadingDialog
|
||||
|
||||
@@ -34,7 +38,17 @@ class TalkTabFragment : BaseFragment<FragmentTalkTabBinding>(
|
||||
viewModel.refreshTalkRooms()
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
bannerAdapter.destroy()
|
||||
super.onDestroyView()
|
||||
}
|
||||
|
||||
private fun setupRecyclerView() {
|
||||
val headerCount = 1
|
||||
bannerAdapter = YandexInlineBannerHeaderAdapter(
|
||||
adUnitId = BuildConfig.YANDEX_INLINE_BANNER_TALK_TAB_AD_UNIT_ID,
|
||||
screenWidth = screenWidth
|
||||
)
|
||||
adapter = TalkTabAdapter {
|
||||
startActivity(
|
||||
ChatRoomActivity.newIntent(
|
||||
@@ -56,16 +70,28 @@ class TalkTabFragment : BaseFragment<FragmentTalkTabBinding>(
|
||||
) {
|
||||
super.getItemOffsets(outRect, view, parent, state)
|
||||
|
||||
val position = parent.getChildAdapterPosition(view)
|
||||
if (position < headerCount) {
|
||||
outRect.set(0, 0, 0, 0)
|
||||
return
|
||||
}
|
||||
|
||||
val adjustedPosition = position - headerCount
|
||||
val lastItemPosition = adapter.itemCount - 1
|
||||
|
||||
outRect.left = 24f.dpToPx().toInt()
|
||||
outRect.right = 24f.dpToPx().toInt()
|
||||
|
||||
when (parent.getChildAdapterPosition(view)) {
|
||||
when (adjustedPosition) {
|
||||
0 -> {
|
||||
outRect.top = 24f.dpToPx().toInt()
|
||||
outRect.bottom = 12f.dpToPx().toInt()
|
||||
outRect.bottom = if (adjustedPosition == lastItemPosition) {
|
||||
24f.dpToPx().toInt()
|
||||
} else {
|
||||
12f.dpToPx().toInt()
|
||||
}
|
||||
}
|
||||
|
||||
adapter.itemCount - 1 -> {
|
||||
lastItemPosition -> {
|
||||
outRect.top = 12f.dpToPx().toInt()
|
||||
outRect.bottom = 24f.dpToPx().toInt()
|
||||
}
|
||||
@@ -81,7 +107,7 @@ class TalkTabFragment : BaseFragment<FragmentTalkTabBinding>(
|
||||
recyclerView.apply {
|
||||
val lm = LinearLayoutManager(requireContext())
|
||||
layoutManager = lm
|
||||
adapter = this@TalkTabFragment.adapter
|
||||
adapter = ConcatAdapter(bannerAdapter, this@TalkTabFragment.adapter)
|
||||
|
||||
// 스크롤 로딩 리스너: 끝에 도달하면 다음 페이지 로드
|
||||
addOnScrollListener(object : RecyclerView.OnScrollListener() {
|
||||
@@ -109,7 +135,7 @@ class TalkTabFragment : BaseFragment<FragmentTalkTabBinding>(
|
||||
adapter.submitList(it)
|
||||
} else {
|
||||
adapter.submitList(emptyList())
|
||||
binding.rvTalk.visibility = View.GONE
|
||||
binding.rvTalk.visibility = View.VISIBLE
|
||||
binding.tvEmpty.visibility = View.VISIBLE
|
||||
binding.tvEmpty.setText(R.string.screen_chat_talk_empty)
|
||||
}
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
android:textSize="20sp"
|
||||
android:fontFamily="@font/regular"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
Reference in New Issue
Block a user