diff --git a/app/src/main/java/kr/co/vividnext/sodalive/chat/character/detail/CharacterDetailActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/chat/character/detail/CharacterDetailActivity.kt index b0c2bbc1..5b15b903 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/chat/character/detail/CharacterDetailActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/chat/character/detail/CharacterDetailActivity.kt @@ -11,19 +11,19 @@ import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import coil.load import coil.transform.CircleCropTransformation +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers +import io.reactivex.rxjava3.schedulers.Schedulers import kr.co.vividnext.sodalive.R import kr.co.vividnext.sodalive.base.BaseActivity import kr.co.vividnext.sodalive.chat.character.comment.CharacterCommentListBottomSheet +import kr.co.vividnext.sodalive.chat.character.comment.CharacterCommentRepository import kr.co.vividnext.sodalive.chat.talk.room.ChatRoomActivity import kr.co.vividnext.sodalive.common.LoadingDialog import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.databinding.ActivityCharacterDetailBinding import kr.co.vividnext.sodalive.extensions.dpToPx -import org.koin.androidx.viewmodel.ext.android.viewModel import org.koin.android.ext.android.inject -import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers -import io.reactivex.rxjava3.schedulers.Schedulers -import kr.co.vividnext.sodalive.chat.character.comment.CharacterCommentRepository +import org.koin.androidx.viewmodel.ext.android.viewModel class CharacterDetailActivity : BaseActivity( ActivityCharacterDetailBinding::inflate @@ -68,6 +68,32 @@ class CharacterDetailActivity : BaseActivity( // 뒤로 가기 binding.detailToolbar.tvBack.setOnClickListener { finish() } + // 탭 구성: 상세, 갤러리 + binding.tabLayout.addTab(binding.tabLayout.newTab().setText("상세")) + binding.tabLayout.addTab(binding.tabLayout.newTab().setText("갤러리")) + binding.tabLayout.addOnTabSelectedListener(object : + com.google.android.material.tabs.TabLayout.OnTabSelectedListener { + override fun onTabSelected(tab: com.google.android.material.tabs.TabLayout.Tab) { + if (tab.position == 0) { + // 상세 탭: 기존 스크롤 화면 표시 + binding.scrollViewCharacterDetail.visibility = View.VISIBLE + binding.flContainer.visibility = View.GONE + } else { + // 갤러리 탭: 컨테이너 표시 및 갤러리 프래그먼트 로드 + binding.scrollViewCharacterDetail.visibility = View.GONE + binding.flContainer.visibility = View.VISIBLE + val fragment = + kr.co.vividnext.sodalive.chat.character.detail.gallery.CharacterGalleryFragment() + supportFragmentManager.beginTransaction() + .replace(R.id.fl_container, fragment) + .commit() + } + } + + override fun onTabUnselected(tab: com.google.android.material.tabs.TabLayout.Tab) {} + override fun onTabReselected(tab: com.google.android.material.tabs.TabLayout.Tab) {} + }) + // 다른 캐릭터 리스트: 가로 스크롤 val recyclerView = binding.rvOtherCharacters recyclerView.layoutManager = LinearLayoutManager( diff --git a/app/src/main/java/kr/co/vividnext/sodalive/chat/character/detail/detail/CharacterDetailFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/chat/character/detail/detail/CharacterDetailFragment.kt new file mode 100644 index 00000000..1dbc4bc3 --- /dev/null +++ b/app/src/main/java/kr/co/vividnext/sodalive/chat/character/detail/detail/CharacterDetailFragment.kt @@ -0,0 +1,19 @@ +package kr.co.vividnext.sodalive.chat.character.detail.detail + +import android.os.Bundle +import android.view.View +import kr.co.vividnext.sodalive.base.BaseFragment +import kr.co.vividnext.sodalive.databinding.FragmentCharacterDetailBinding + +/** + * 캐릭터 상세 - 상세 탭 + * TODO: 기존 CharacterDetailActivity UI 바인딩 로직을 이 Fragment로 점진적으로 이전합니다. + */ +class CharacterDetailFragment : BaseFragment( + FragmentCharacterDetailBinding::inflate +) { + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + // 추후 상세 UI/로직 반영 예정 + } +} diff --git a/app/src/main/java/kr/co/vividnext/sodalive/chat/character/detail/gallery/CharacterGalleryFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/chat/character/detail/gallery/CharacterGalleryFragment.kt new file mode 100644 index 00000000..63bd57d0 --- /dev/null +++ b/app/src/main/java/kr/co/vividnext/sodalive/chat/character/detail/gallery/CharacterGalleryFragment.kt @@ -0,0 +1,18 @@ +package kr.co.vividnext.sodalive.chat.character.detail.gallery + +import android.os.Bundle +import android.view.View +import kr.co.vividnext.sodalive.base.BaseFragment +import kr.co.vividnext.sodalive.databinding.FragmentCharacterGalleryBinding + +/** + * 캐릭터 상세 - 갤러리 탭 (빈 화면) + */ +class CharacterGalleryFragment : BaseFragment( + FragmentCharacterGalleryBinding::inflate +) { + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + // 추후 갤러리 콘텐츠 추가 예정 + } +} diff --git a/app/src/main/res/layout/activity_character_detail.xml b/app/src/main/res/layout/activity_character_detail.xml index a284d105..afc0d028 100644 --- a/app/src/main/res/layout/activity_character_detail.xml +++ b/app/src/main/res/layout/activity_character_detail.xml @@ -11,13 +11,26 @@ android:id="@+id/detail_toolbar" layout="@layout/detail_toolbar" /> - + + + @@ -499,6 +512,15 @@ + + + + + + + + diff --git a/app/src/main/res/layout/fragment_character_gallery.xml b/app/src/main/res/layout/fragment_character_gallery.xml new file mode 100644 index 00000000..2fd9dad7 --- /dev/null +++ b/app/src/main/res/layout/fragment_character_gallery.xml @@ -0,0 +1,17 @@ + + + + + +