1. ViewPager란?
- 좌우로 스와이프 하며 View를 전환하는 AdapterView (Ex. 갤러리)
- 화면이 바뀌는 것이 아닌 화면만한 뷰들이 전환되는 개념이다.
- 따라서, ViewPager로 스와이프 시킬 View들의 리스트를 만들고 그 리스트를 관리해주어야 한다.
// 1. 뷰리스트 생성
var view_list = ArrayList<View>()
// 2. 뷰리스트에 add.
view_list.add(layoutInflater.inflate(R.layout.view1,null))
view_list.add(layoutInflater.inflate(R.layout.view2,null))
view_list.add(layoutInflater.inflate(R.layout.view3,null))
2. Adapter 관련 주요 메서드
- ViewPager는 Adapter를 만들어서 사용해야 한다.
- getCount() : ViewPager로 보여줄 뷰의 전체 갯수
- isViewFromObject() : instantiateItem 에서 만든 객체를 사용할 것인지의 여부를 결정한다.
- instantiateItem() : ViewPager로 보여줄 뷰 객체를 반환한다.
- destroyItem() : ViewPager에서 뷰가 사라질 때 제거하는 작업을 한다.
inner class CustomAdapter : PagerAdapter()
{
override fun getCount(): Int {
return view_list.size
}
// 현재 객체가 보여줄 객체와 일치 하는지!
// 코틀린은 저 따옴표로 키워드를 생성할 수 있다.
override fun isViewFromObject(view: View, `object`: Any): Boolean {
return view == `object`
}
// 항목을 구성하기 위해 호출하는 함수.
// 보여주고자 하는 항목을 Pager 객체에 넣고 반환해주면된다.
override fun instantiateItem(container: ViewGroup, position: Int): Any {
// 이 함수 다음에 isViewFromObject()가 호출이 되서,
// 이게 첫번째 인자, return 값이 2번째 인자로 들어간다.
viewpager.addView(view_list[position])
return view_list[position]
}
// 더이상 안보여지는 항목을 없애주는 메소드.
// 이게 없으면 정상 작동x
override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) {
viewpager.removeView(`object` as View)
//obj를 View로 형변환하고 제거해라.
}
}
3. 리스너
// 리스너 익명 중첩 클래스
viewpager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener{
// 스크롤 상태가 변경되었을 때
override fun onPageScrollStateChanged(state: Int) {
}
override fun onPageScrolled(
position: Int,
positionOffset: Float,
positionOffsetPixels: Int
) {
textView.text = "${position} 번째 뷰가 나타났습니다"
}
// 클릭했을 때 반응
override fun onPageSelected(position: Int) {
}
})
https://developer.android.com/training/animation/screen-slide.html
'Deperecated > Android_강의' 카테고리의 다른 글
안드로이드 - ContextMenu (0) | 2020.02.13 |
---|---|
안드로이드 - 메뉴 - OptionMenu (0) | 2020.02.12 |
안드로이드 - Spinner (0) | 2020.02.12 |
안드로이드 - CustomAdapter (0) | 2020.02.12 |
안드로이드 - CustomListView2 (0) | 2020.02.10 |