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] 안드로이드 사전 과제 - 정연준 #51

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

[2023-02-02] 안드로이드 사전 과제 - 정연준 #51

duswns261 opened this issue Feb 2, 2023 · 0 comments

Comments

@duswns261
Copy link

duswns261 commented Feb 2, 2023

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

Layout의 선택은 화면 구성 시간, 동작 성능, 유지 보수에 영향을 줄 수 있어 매우 중요하다.
그 중, 풍부한 표현식으로 레이아웃의 유연성을 높인 Constraint Layout은 다음과 같은 특성을 가진다

  • 복잡한 레이아웃을 단순한 계층구조를 이용해 표현할 수 있다.
  • 언번들로 제공되어 개발자에게 맞게 버전을 사용할 수 있다.
  • 하나의 레이아웃으로 다양한 유스케이스에 대응이 되며, 단순한 계층구조를 가지며 퍼포먼스 향상에 도움이 된다.
  • 반드시 제약조건을 통해 위치를 결정해야 한다.(중요)

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

많은 종류의 Layout 중 ConstraintLayout 선정 이유에 대해 알기 위해서는 안드로이드가 뷰를 어떻게 그리는지 알아야 한다.

안드로이드는 뷰를 어떻게 그리는가?

  1. 시스템은 각각의 뷰 그룹과 구성요소들의 크기와 위치를 결정하기 위해 뷰 트리의 하향식 탐색을 수행
  2. 앞선 단계에서 결정된 뷰그룹 하위에 속한 오브젝트들의 사이즈를 이용하여 뷰그룹의 위치가 결정됨에 따라, 또 다른 뷰 트리 하향식 탐색을 수행
  3. 앞의 두 단계(측정과 레이아웃)에서 시스템이 결정한 뷰, 뷰 그룹과 뷰 오브젝트들의 사이즈와 위치를 포함한 Canvas 오브젝트 생성

왜 ConstraintLayout인가?

  • 개발자가 각 뷰 계층내에 포함시킨 뷰가 많아질수록 디바이스가 뷰를 그리기 위해 더 많은 시간과 연산 능력을 필요로 하게 된다.
  • LinearLayou, RelativeLayout 이 두가지 Layout의 경우 특성상 중첩된 뷰가 있는 계층으로 만들 가능성이 높아진다.
  • 이에 반해, 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