Android - ViewPager2 / TabLayout
2024. 7. 18. 11:13ㆍ[개발]/Kotlin 활용 앱 개발
# ViewPager2
- 화면 슬라이드 기능 구현 시 사용
- 다양한 페이지 전환을 제공
- Fragment, View 등 다양한 페이지 간 전환 제공
- View 사용 시 => RecyclerView.Adapter(View)
- Fragment 사용 시 => FragmentStateAdapter(Fragment)
# TabLayout
- 상단에 탭을 표시하고 각 탬을 누를 때 ViewPager2의 페이지를 전환할 수 있는 인터페이스 제공
# 사용방법
1) gradle에 추가
implementation 'androidx.viewpager2:viewpager2:x.x.x' //x.x.x 최신 버전
implementation 'com.google.android.material:material:x.x.x' //x.x.x 최신 버전
2-1) View용 Adapter 생성
class ImagePagerAdapter(
private val images: List<Int> // 이미지 리소스 ID 리스트
) : RecyclerView.Adapter<ImagePagerAdapter.ImageViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ImageViewHolder {
val view = LayoutInflater.from(parent.context)
.inflate(R.layout.item_image, parent, false)
return ImageViewHolder(view)
}
override fun onBindViewHolder(holder: ImageViewHolder, position: Int) {
holder.imageView.setImageResource(images[position])
}
override fun getItemCount(): Int = images.size
inner class ImageViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
val imageView: ImageView = itemView.findViewById(R.id.imageView)
}
}
2-2) Fragment용 Adapter 생성
class ViewPagerAdapter(activity: AppCompatActivity) : FragmentStateAdapter(activity) {
override fun getItemCount() = 3
override fun createFragment(position: Int) = when (position) {
0 -> HomeFragment()
1 -> SearchFragment()
2 -> SettingFragment()
else -> throw IllegalStateException("Invalid position: $position")
}
}
3) ViewPager2, TabLayout 연결
with(binding) {
viewPager.adapter = ViewPagerAdapter(this@MainActivity)
TabLayoutMediator(tabLayout, viewPager) { tab, position ->
tab.text = getString(tabTitles[position])
}.attach()
}
'[개발] > Kotlin 활용 앱 개발' 카테고리의 다른 글
Compose - 개념 (0) | 2024.07.30 |
---|---|
Android - ViewType(뷰타입) (0) | 2024.07.18 |
Android - RecyclerView에서의 ListAdapter 활용 (0) | 2024.07.18 |
Android - RecyclerView에서 클릭 이벤트를 전달하기 (1) | 2024.07.18 |
Android - 알림(Notification) (0) | 2024.07.17 |