Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[2023-02-02] 안드로이드 사전 과제 - 정효혁 #53

Open
happinessee opened this issue Feb 2, 2023 · 0 comments
Open

[2023-02-02] 안드로이드 사전 과제 - 정효혁 #53

happinessee opened this issue Feb 2, 2023 · 0 comments

Comments

@happinessee
Copy link

1. ConstraintLayout의 주요 특징을 학습하고 정리해주세요.

docs : https://developer.android.com/reference/kotlin/androidx/constraintlayout/widget/ConstraintLayout

ConstraintLayout은 보기의 위치를 정의하기 위해 다른 보기, 상위 레이아웃 또는 표시되지 않는 안내선을 기준으로한 정렬 또는 연결을 나타내는 레이아웃이다.

  • 플랫 뷰 계층 구조로 크고 복잡한 레이아웃을 만들 수 있다.
    • 동위 보기와 상위 레이아웃 사이의 관계에 따라 모든 보기위 레이아웃이 결정된다는 점에서 RelativeLayout과 비슷하지만, RelativeLayout보다 더 유연하고 Android Studio의 Layout Editor와 함께 사용하기 더 쉽다.
  • 보기의 위치를 정의하려면 보기의 가로 및 세로 제약조건을 각각 하나 이상 추가해야 한다.
    • 제약조건은 다른 보기, 상위 레이아웃 또는 표시되지 않는 안내선을 기준으로 한 정렬 또는 연결을 나타낸다.
    • 각 제약조건은 세로 또는 가로 축을 따라 보기의 위치를 정의하므로, 각 보기에는 축마다 하나 이상의 제약조건이 있어야 한다.
    • 제약 조건이 누락된다면 Layout Editor에서는 누락된 제약조건을 툴바에 오류로 표시한다.
  • Relative positioning (상대 위치 정의)
    • 위젯을 다른 위젯과 상대적으로 배치할 수 있게 만들어준다.
  • Margins (마진)
    • 제약이 있는 경우, 측면 마진이 설정되어 있다면 해당 제약에 적용되어 간격을 적용한다.
  • Centering positioning (중앙 위치 정의)
    • 제약 조건을 동시에 충족하지 않는 등의 불가능한 제약 조건을 처리하는 방법 중 하나이다.
  • Circular positioning (원형 위치 정의)
    • 다른 위젯 중심을 기준으로, 거리와 각도로 위젯의 중심을 제한할 수 있다.
  • Visibility behavior (가시성 동작)
    • ConstraintLayout은 View.Gone이라고 표시된 위젯을 구체적으로 다룰 수 있다.
    • 기본적으로 점처럼 차원이 0으로 간주한다.
    • 다른 위젯에 대한 제약이 있는 경우에도 여전히 존재할 수 있지만 여백은 0과 같다.
  • Dimension constraints (치수/면적/크기 제약)
    • 특정 크기로 위젯을 지정할 수 있다.
    • WRAP_CONTENT를 통해 대상 위젯 내부의 컨텐츠 크기에 맞출 수 있다.
    • 최대한의 크기를 사용할 수 있도록 지정하거나 비율, %단위로 크기를 조절할 수 있다.
  • Chains (체인)
    • 양방향 연결을 통해 연결된 경우 체인이다. 체인은 보통 가용 공간에 요소들을 균등하게 놓을 때 많이 사용된다.
    • 체인의 첫 번째 요소는 체인 헤드로, 체인은 체인 헤드에 설정된 속성에 의해 제어된다.
    • 설정 속성에는 가중치, 여백 등이 있다.
  • Virtual Helpers objects (가상 도우미 객체)
    • 도우미 객체를 통해서도 레이아웃을 조정할 수 있다.
    • 가이드라인, 배리어, 그룹이 있으며 실제로 보이지는 않지만 위젯을 붙여 위젯의 위치를 편하게 조정할 수 있다.
  • Optimizer (최적화 도구)
    • 레이아웃 속도를 높이기 위한 최적화 도구이다.
    • app:layout_optimizationLevel 태그를 추가해 적용할 최적화를 결정할 수 있다.

2. XML에서 활용할 수 있는 Layout은 LinearLayout, RelativeLayout 등 여러 종류가 있습니다. Layout을 선택하는 기준과 현재는 ConstraintLayout으로 대체가 된 이유를 함께 설명해주세요.

Layout 선택 기준

Layout마다 특성이 있으므로, 만들려는 화면이 어떤 특성을 가지고 있고 어떤 Layout으로 만드는 것이 좋을지 개발 난이도, 시간, 편의성 등을 생각하면 좋을 듯 하다.

ConstraintLayout으로 대체된 이유

대부분의 화면을 개발하는 경우 사용하기 편하고 성능도 좋기 때문이다. ConstraintLayout은 구글이 현재 권장하는 레이아웃이며 기본 템플릿이다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant