공식문서는 변동사항이다.
페이지를 넘길때 사용하는 것이 viewPager라고 한다.
2019년에 viewPager2가 나오면서 기존 viewPager보다는 viewPager2를 사용한다.
사용법은 저번에 recyclerView를 사용하려고 공부하다가 사용은 안했었는데
recyclerView 사용하듯이 사용하면 된다.
사용하려는 목적은 팀 소개 프로젝트를 진행하면서 개인 페이지에 사진을 추가해서 슬라이드 형식으로 넘기기 위해 사용한다.
1) 먼저 ImageView부분을 ViewPager2로 바꿔주었다.
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/viewPager"
android:layout_width="190dp"
android:layout_height="210dp"
android:layout_marginStart="20dp"
android:layout_marginTop="20dp"
android:layout_marginEnd="20dp"
android:src="@drawable/people"
android:background="@color/white"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/personal_toolbar"/>
2) 그러고 나서 image_item으로 xml부분을 추가해주었다.
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<ImageView
android:id="@+id/imageListView"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
3) 이제 MainActivity에서 어댑터를 생성해주고 들어갈 사진들을 만들어준다.
(index로 코드를 만든 상태여서 index를 사용해서 만들었다.)
private fun getImageList1(): ArrayList<Int> {
return arrayListOf<Int>(R.drawable.pic1, R.drawable.pic1, R.drawable.pic1)
}
private fun getImageList2(): ArrayList<Int> {
return arrayListOf<Int>(R.drawable.pic2, R.drawable.pic2, R.drawable.pic2)
}
private fun getImageList3(): ArrayList<Int> {
return arrayListOf<Int>(R.drawable.pic3, R.drawable.pic3, R.drawable.pic3)
}
private fun getImageList4(): ArrayList<Int> {
return arrayListOf<Int>(R.drawable.pic4, R.drawable.pic4, R.drawable.pic4)
}
음.. 뭔가 더 깔끔하게 사용할 수 있을 것같지만 넘어가고 혼자 공부할때 알아봐야겠다.
binding.viewPager.orientation = ViewPager2.ORIENTATION_HORIZONTAL
binding.personalToolbar.returnBtn.setOnClickListener {
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)
}
4) 어댑터가 필요하다!!
class ViewPagerAdapter(imageList: ArrayList<Int>) : RecyclerView.Adapter<ViewPagerAdapter.PagerViewHolder>() {
var item = imageList
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = PagerViewHolder((parent))
override fun getItemCount(): Int = item.size
override fun onBindViewHolder(holder: PagerViewHolder, position: Int) {
holder.imageList.setImageResource(item[position])
}
inner class PagerViewHolder(parent: ViewGroup) : RecyclerView.ViewHolder
(LayoutInflater.from(parent.context).inflate(R.layout.image_item, parent, false)){
val imageList = itemView.findViewById<ImageView>(R.id.imageListView)!!
}
}
위에 말한것처럼 recyclerView 사용하듯이/라고 말한게 adapter생성하면서 느꼈다.
onCreateViewHolder, getItemCount, onBindViewHolder 추가하고 다른곳에서 사용 안하므로 inner class 생성
5) 간단하게 가야겠다고 생각해서 if문으로 index에 맞게 넣었다..(잘한건지 모르겠따,,)
binding.viewPager.adapter = if (idx == 0) {
ViewPagerAdapter(getImageList1())
} else if (idx == 1) {
ViewPagerAdapter(getImageList2())
} else if (idx == 2) {
ViewPagerAdapter(getImageList3())
} else {
ViewPagerAdapter(getImageList4())
}
'Android Studio' 카테고리의 다른 글
Android - 방명록 작성 (Firestore Database) (1) | 2024.02.29 |
---|---|
Firebase - Firestore Database 사용 (0) | 2024.02.29 |
Android - AppCompatDelegate 사용해서 테마 바꾸기 (라이트모드/다크모드 / 시스템설정) (0) | 2024.02.28 |
Android - 이미지 슬라이드 DotsIndicator 사용 (0) | 2024.02.28 |
Android - Postman 사용하기 (0) | 2024.02.21 |