Deperecated/Android_강의

안드로이드 - ViewPager

누알라리 2020. 2. 12. 22:41
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