와챠의 우당탕탕 코딩 일기장
[Android/Kotlin] PageIndicatorView/Viewpager indicator 본문
코딩 일기장/Android(Kotlin)
[Android/Kotlin] PageIndicatorView/Viewpager indicator
minWachya 2022. 5. 5. 21:18반응형
Viewpager를 연결하는 indicator는 항상 CircleIndicator를 써왔는데, 이번엔 좀 다른 걸 써보려고 한다.
구글링 하다가 발견한 PageIndicatorView!! 다양한 애니메이션도 지원해주고,
방법도 어렵지 않기에 함 해보기로^____________^
완성된 모습은 요렇다(아래 사진은 '동네 고영희' 앱 UI입니다!!!)
https://github.com/romandanylyk/PageIndicatorView
1. dependencies 추가
implementation 'com.romandanylyk:pageindicatorview:1.0.3' // pageindicatorview
2. xml에 view 추가
- app:piv_animationType="color":여러 애니메이션 중 color 애니메이션 적용
- app:piv_dynamicCount="true"
- app:piv_interactiveAnimation="true"
- app:piv_selectedColor="@color/brown_473A22": 선택된 위치의 동그라미 색상
- app:piv_unselectedColor="@color/beige_E3DECF": 미 선택된 위치의 동그라미 색상
- app:piv_viewPager="@id/pager": indicator와 연결될 viewpager id
- app:piv_padding="11dp": 동그라미 사이 간격
- app:piv_radius="5dp": 동그라미 크기
<FrameLayout
android:id="@+id/frameLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/beige_BBB5A4"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginBottom="40dp">
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="340dp" />
</FrameLayout>
<com.rd.PageIndicatorView
android:id="@+id/pageIndicatorView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
app:piv_animationType="color"
app:piv_dynamicCount="true"
app:piv_interactiveAnimation="true"
app:piv_selectedColor="@color/brown_473A22"
app:piv_unselectedColor="@color/beige_E3DECF"
app:piv_viewPager="@id/pager"
app:piv_padding="11dp"
app:piv_radius="5dp"
android:layout_marginTop="36dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/frameLayout" />
3. 코드 짜기
val pager = binding.pager
val indicator = binding.pageIndicatorView
// 어댑터 연결
pager.adapter = VpagerAdapter(this@OnBoardingActivity)
pager.orientation = ViewPager2.ORIENTATION_HORIZONTAL
pager.offscreenPageLimit = 4
// indicator 설정
indicator.count = 3 // 전체 3
indicator.selection = 0 // 현재 0
pager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
super.onPageSelected(position)
indicator.selection = position
}
})
참고로 이건 VpagerAdapter이다...^_^ 작업중이라 미완이지만,,극적극적
inner class VpagerAdapter(fragmentActivity: FragmentActivity) : FragmentStateAdapter(fragmentActivity) {
// 어댑터에서 다루는 아이템의 갯수
override fun getItemCount() = 3 // 도움말 이미지 3장(예시
// 현재 선택된 프레그먼트 번호에 따른 프레그먼트 보여주기
override fun createFragment(position: Int): Fragment {
return when(position) {
0 -> OnBoardingFragment1()
1 -> OnBoardingFragment2()
2 -> OnBoardingFragment1()
// 디폴트는 시작 페이지로
else -> OnBoardingFragment1()
}
}
}
라이브러리 찾아보는 거 재밌다
반응형
'코딩 일기장 > Android(Kotlin)' 카테고리의 다른 글
[Android/Kotlin]Detect Screen Capture Event/캡쳐 탐지/캡쳐 시 스낵바 띄우기 (2) | 2022.05.27 |
---|---|
[Android/Kotlin] Create a Word File/워드 파일 생성하기!!(.docx)/XWPFRun (0) | 2022.05.25 |
[Android/Kotlin] Lottie Animation/애니메이션 추가하기 (0) | 2022.05.04 |
[Android/Kotlin]CustomView: color 속성 추가하기 (0) | 2022.04.26 |
[Android/Kotlin]음성인식(STT:Speech-To-Text) 만들기 (0) | 2022.04.21 |
Comments