[참고, 인용한 사이트]
뷰들은 ViewGroup 클래스로부터 상속받는다. (android.view.ViewGroup)
RecyclerView
거의 모든 리스트를 표현하는데 쓰인다
항목이 스크롤되어 화면에서 벗어나더라도 뷰를 제거하지 않고, 스크롤된 새 항목의 뷰로 재사용한다. 이를통해 성능 향상, 응답성 향상, 전력소비 감소를 이끈다.
- 리스트의 각 개별적 요소는 ViewHolder 객체에 의해 정의된다. ViewHolder 클래스를 정의하려면 RecyclerView.ViewHolder 를 상속해야 한다.
- ViewHolder는 필수 구현사항
- 레이아웃매니저와 작성한 어댑터를 리사이클러뷰에 지정하기 : 내용 출처 : 링크
ViewPager
좌우로 스와이프해 컨텐츠를 볼 수 있는 형태의 뷰
약간의 비효율성이 있기에 최신 버전인 ViewPager2 등장 (RecyclerView 활용의 차이)
ViewPager2 - 링크
RecyclerView 기반으로 만들어진 컴포넌트
- RecyclerView.Adapter를 사용할 수 있다는 것이 편리
- ViewPager2에서 RecyclerView로 전환할 수 있다는 장점
- RecyclerView 안에 ViewPager2를 넣어도 리소스를 많이 사용하지 않는 장점
- setOrientation()을 사용하여 방향 설정 가능
RecyclerView 안에 ViewPager을 넣을 경우
각각의 row마다 ViewPager를 넣을 경우
주의점 : RecycleView는 재활용되기 때문에, 한 row에서 다른 row로 넘어갈 때 페이
ViewPager는 PagerAdapter 기반으로 구성 - 스크롤할 때마다 instantiateItem()과 destroyItem() 메서드가 호출되어 버벅거릴 수 있다.
그래서 RecyclerView에 RecyclerView를 집어넣고 Pager의 느낌을 내기 위하여 PagerSnapHelper를 이용해 해결한다면, 너무 많은 cost가 든다고 했다.
그러나 ViewPager2는 RecyclerView 기반으로 만들어진 컴포넌트라서 PagerSnapHelper를 별도로 커스텀해 개발할 필요가 없다고 한다.
LayoutManager
뷰가 나열되는 형태를 관리한다. 다양한 레이아웃 형태를 제공한다.
- LinearLayout : 수직 or 수평방향에 자식 뷰를 배치
- TableLayout : 격자형태의 행과 열로 자식 뷰를 배치
- FrameLayout : 화면의 영역을 할당하여 자식 뷰를 배치
- RelativeLayout : 자식 뷰가 다른 뷰에 따라 상대적으로 배치되게끔 할 수 있음. 유연한 레이아웃 매니저
- AbsoluteLayout : 특정 xy좌표에 위치하게 함. 유연성이 부족한 레이아웃 매니저
- GridLayout : 행과 열이 교차하는 격자를 구성하며, 자식 뷰들이 셀에 위치.
등..
Fragment - 참고 문서
- Fragment 클래스를 만든 후 주요 수명주기 메서드를 재정의해야 한다.
- 프래그먼트 실행에 필요한 콜백은 onCreateView()
세부적인 것 정리
ViewPager2의 Adapter 설정 방법 두가지
- RecyclerView.Adapter :
- FragmentStateAdapter :
(기존의 FragmentStatePagerAdapter는 FragmentStateAdapter로 변경되었다고 한다)
'JAVA' 카테고리의 다른 글
안드로이드 - ViewPager2를 이용한 슬라이더 학습 (0) | 2021.01.19 |
---|---|
쓰다 만 전자액자 포스팅 with 감격의 순간 ㅠㅅㅠ (0) | 2021.01.18 |
안드로이드 - 챕터8, 수평 측정기 (0) | 2021.01.14 |
[안드로이드] 늦은 초기화 방법 (0) | 2021.01.12 |
안드로이드 - 챕터7, 웹브라우저 (0) | 2021.01.11 |