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] 안드로이드 사전 과제 - 윤영선 #52

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

[2023-02-02] 안드로이드 사전 과제 - 윤영선 #52

yys7517 opened this issue Feb 2, 2023 · 0 comments

Comments

@yys7517
Copy link

yys7517 commented Feb 2, 2023

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

  • ConstraintLayout을 사용하면 Flat한 뷰 계층 구조로 크고 복잡한 레이아웃을 만들 수 있습니다. (중첩되는 뷰 그룹이 없는 계층 구조)
  • 다른 View와 Layout 사이의 관계에 따라 모든 View의 레이아웃 위치가 결정된다는 점에서 RelativeLayout과 비슷하지만, 더 유연하고 사용하기 쉽습니다.
  • 가로 및 세로의 제약 조건을 반드시 하나 이상 추가해야 한다. (필수)
  • View의 Top, Bottom , Start , End에 대해서 어느 View와 Layout에 제약을 걸어 레이아웃을 쉽게 배치할 수 있다.

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

[Layout을 선택하는 기준]

  • 가로 또는 세로 방향으로 순서대로 뷰를 나타낼 때는 LinearLayout을 사용한다.
  • 어떤 View의 위치를 기점으로하여 상대적으로 다른 상위 또는 하위의 View를 배치하기 위해서는 RelativeLayout을 사용한다.
  • 그 외에도 표 형태를 나타낼 때 TableLayout, 격자 모양을 나타낼 때 GridLayout 을 사용하는 방법 등이 있다.

[ConstraintLayout으로 대체가 된 이유]

이유는, 구글에서 ConstraintLayout을 소개한 이후로, 아낌없는 지원을 이어갈 뿐만 아니라 비율에 따른 View 크기 조정, 성능적인 부분에서 향상된 퍼포먼스를 얻을 수 있는 이점이 있기 때문이라고 할 수 있다.

제약 조건에 따라 View의 크기를 조정할 수 있어서 고정적인 크기 값을 주지 않고, 여러 기기에서 호환되고 통일되는 레이아웃을 작성할 수 있다.
성능적인 부분에서 어떻게 향상된 퍼포먼스를 어떻게 얻을 수 있을까 ?

레이아웃을 그리는 과정 내의 모든 단계에서는 View 트리에 대한 하향식 탐색을 필요로 하는데, 이 때 개발자가 작성한 레이아웃 코드에 따라서 View의 계층이 높을 수, 더 많은 탐색을 진행하기 위해, 많은 연산과 시간을 필요로 하게 된다.

하지만, ConstraintLayout을 사용함으로써, 위에 작성한 특징과 같이 복잡하고 큰 레이아웃 구조이더라도 Flat한 View 계층 구조를 가진 레이아웃을 작성할 수 있다. 따라서 성능적인 부분에서 이점을 가져올 수 있다.

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