1. LinearLayout
- LinearLayout은 단 방향으로 모든 하위 요소를 정렬하는 뷰 그룹이다.
- 두 가지 방향이 있다.
1. horizontal(수평)
2. vertical(수직)
- LinearLayout의 모든 하위 요소는 순차적으로 스택 되므로, 세로 목록의 경우 너비에 상관없이
한 행당 하나의 하위 요소만 있게되며, 가로 목록의 경우 높이가 한 행 높이다.
주요 속성
android:orientation : 레이아웃 방향을 지정할 수 있다.
android:gravity : 객체가 자신의 경계 내에서 X, Y축 모두에 내용을 배치하는 방법을 지정
2. FrameLayout
- FrameLayout은 단일 항목을 표시하도록 설계되었다.
- 일반적으로 단일 하위 뷰를 유지하는 데 사용해야 한다.
하위 뷰가 서로 겹치지 않으면서 다른 화면 크기로 확장할 수 있는 방식으로
하위 뷰를 구성하기가 어려울 수 있기 때문이다.
- 여러 개의 뷰를 중첩한 후, 뷰를 전환하여 보여주는 방식으로 사용된다.
3. RelativeLayout
- 각 보기의 위치는 형제 요소 또는 부모 영역과 관련된 위치로 화면을 구성하는 방법
- 중첩된 뷰 그룹을 제거하고 레이아웃 계층 구조를 평평하게 유지하여 성능을 향상시킬 수 있다.
- 여러 개의 중첩된 LinearLayout 그룹을 사용하는 경우 단일 그룹으로 대체할 수 있다.
주요 속성
android:gravity : 객체가 자신의 경계 내에서 X 및 Y 축 모두에 내용을 배치하는 방법을 지정
android:ignoreGravity : 중력의 영향을 받지 않아야 하는 뷰를 나타낸다.
android:layout_alignParentTop : true인 경우 부모의 위쪽 가장자리와 일치
android:layout_centerVertical : true인 경우 부모 내에서 이 자식을 세로로 가운데에 놓는다.
android:layout_below : 지정한 뷰의 아래에 배치한다.
android:layout_toRightOf : 지정한 뷰의 오른쪽에 배치한다.
4. ConstraintLayout
- 단순한 계층 구조로 만들어낼 수 있다.
- 개발자가 완전히 통제할 수 있다.
- 복잡한 레이아웃을 작성할 수 있다.
- 레이아웃에 배치되는 뷰들에 여러 제약(Constraint)을 적용하여 각 뷰의 위치와 크기를 결정한다.
제약 유형
- 상대 위치(Relative Positioning) : 지정된 위젯을 다른 위젯에 상대적으로 배치하여 가로 및 세로를 제한한다.
- 여백(Margins) : 측면 여백이 설정되면 해당 제약조건에 적용되어 대상과 소스측면 사이의 간격으로 여백이 적용된다.
- 센터링 포지셔닝(Centering positioning) : 뷰를 부모 레이아웃 또는 제약 영역의 중앙에 배치한다.
- 원형 위치(Circular positioning) : 각도와 거리에서 다른 위젯 중심을 기준으로 위젯 중심을 구속할 수 있다.
- 가시성 행동(Visibility behavior) : 뷰의 Visibility 상태에 따른 최종 위치 결정 및 여백.
- 치수 제약(Dimension constraints) : 레이아웃 자체의 최소 및 최대 크기를 정의할 수 있다.
- 쇠사슬(Chains) : 수평 또는 수직 방향으로 나열된 뷰에 대한 그룹화. 배치 스타일 지정.
- 가상 도우미 개체(Virtual Helpers objects) :레이아웃 내 효율적인 뷰 배치에 사용 가능한 몇 가지 Helper 객체들.
(Guideline, Barrier, Group)
- 옵티 마이저(Optimizer) : 제약 카테고리에 대한 최적화
5. TableLayout
- 자식을 행과 열로 배열하는 레이아웃이다.
- TableLayout은 Tablerow 각각 행을 정의하는 여러 개체로 구성된다.
- Tablerow가 없으면 사용이 불가능하다.
- TableLayout 컨테이너에는 행, 열 또는 경계선이 표시되지 않는다.
- 각 행에는 0개 이상의 셀이 있다.
- 열 너비는 해당 열에서 가장 넓은 셀이 있는 행으로 정의된다.
- 스크롤하는 것을 하기 위해 스크롤 자체를 수행하지는 않지만, 사용하려면 ScrollView에 넣어야 한다.
- 모든 테이블 레이아웃 행을 인스턴스 화해 야하고 재활용하지 않기 때문에 표시할 데이터양이 적은 경우에 유용하다.
- TableLayout의 하위는 layout_width 속성을 지정할 수 없다. 너비는 항상 Match_Parent이다.
그러나 layout_height 속성은 자식에 의해 정의될 수 있다.
주요 속성
android:collapseColumns : 축소할 열의 인덱스
android:shrinkColumns : 축소할 열의 인덱스
android:stretchColumns : 늘릴 열의 인덱스
6. GridLayout
- 자식을 사각형 격자에 배치하는 레이아웃이다.
- 격자는 보기 영역을 셀로 분리하는 무한의 얇은 선으로 구성된다.
- API전체에서 그리드 라인은 그리드 인덱스로 참조된다.
- 그리드 N열이 N+1에서 실행 그리드 인덱스 0을 N 포함한다.
- GridLayout 구성 방법에 관계없이 그리드 인덱스 0은 컨테이너의 선행 가장자리에 N 고정되고
그리드 인덱스는 패딩을 고려한 후 끝 가장자리에 고정된다.
- 동일한 UI인 경우 일반적으로 테이블보다 더 적은 메모리를 사용한다.
주요 속성
android:orientation : 자식 뷰들이 셀 영역에 배치되는 방향을 결정
android:rowCount : 행의 개수를 지정
android:columnCount : 열의 개수를 지정
7. xFragmentLayout
- 여러 개의 Fragment를 하나의 액티비티에 결합하여 창이 여러개인 UI를 빌드할 수 있으며,
하나의 프래그먼트를 여러 액티비티에서 재사용할 수 있다.
- Fragment는 액티비티의 모듈식 섹션이라고 생각하면된다.
- 자체적인 수명 주기를 가지고, 자체 입력 이벤트를 수신하고, 액티비티 실행 중에 추가 및 삭제가 가능하다.
- Fragment는 Activity 내에 생성되는 UI 구성을 여러 개의 모듈 단위로 작성할 수 있도록 해주는 기능이다.
- 한번 작성된 Fragment는 여러 Activity에서 재사용이 가능하므로 UI 구성에 소요되는
작업량을 많이 부분 감소시킬 수 있다.
라이프 사이클
Fragment의 수명주기는 소유 활동과 관련이 있지만 표준 활동 수명주기에는 고유한 주름이 있다.
기본 활동 라이프 사이클 방법이 포함되지만 활동 및 UI 생성과의 상호 작용과 관련된 방법도 중요하다.
프래그먼트를 재개 된 상태로 만들기 위해 호출되는 핵심 라이프 사이클 메소드
1. onAttach(Activity) : 플래그먼트가 해당 활동과 연관되면 호출된다.
2. onCreate(Bundle) : 프래그먼트의 초기 생성을 호출했다.
3. onCreateView(LayoutInflater, ViewGroup, Bundle) : 프래그먼트와 관련된 뷰 계층을 생성하고 반환한다.
4. onActivityCreated(Bundle) : 프래그먼트에 해당 활동이 자체 완료되었음을 알린다.
5. onViewStateRestored(Bundle) : 뷰 계층의 저장된 모든 상태가 복원되었음을 프래그먼트에 알려준다.
6. onStart() : 프래그먼트를 사용자에게 표시한다.
7. onResume() : 프래그먼트가 재개되는 활동을 기반으로 사용자와 상호 작용하기 시작한다.
프래그먼트가 더이상 사용되지 않으므로 일련의 역 콜백을 거친다.
1. onPause() : 활동이 일시 정지 중이거나 활동에서 이를 수정 중이므로 프래그먼트가 더 이상 사용자와 상호작용하지 않는다.
2. onStop() : 활동이 중지 중이거나 활동에서 이를 수정 중이므로 프래그먼트가 더이상 사용자에게 표시되지 않는다.
3. onDestroyView() : 프래그먼트가 View와 관련된 리소스를 정리할 수 있도록 한다.
4. onDestroy() : 프래그먼트 상태의 최종 정리를 수행하기 위해 호출한다.
5. onDetach() : 프래그먼트가 더 이상 활동과 연관되지 않기 전에 호출된다.
'프로그래밍 > Android' 카테고리의 다른 글
Manifest (0) | 2019.09.24 |
---|---|
Palette 조사 (0) | 2019.09.23 |