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-01] 안드로이드 사전 과제 - 김민수 #40

Open
KIMTHE opened this issue Feb 1, 2023 · 0 comments
Open

[2023-02-01] 안드로이드 사전 과제 - 김민수 #40

KIMTHE opened this issue Feb 1, 2023 · 0 comments

Comments

@KIMTHE
Copy link

KIMTHE commented Feb 1, 2023

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

  • 말 그대로, View들에 제약 조건을 두어 배치할 수 있는 레이아웃 입니다.

  • ID를 이용하여, 다음 속성을 통해 다른 View와 제약 조건을 이용해서 배치합니다.

layout_constraintTop_toTopOf
layout_constraintTop_toBottomOf
layout_constraintBottom_toTopOf
layout_constraintBottom_toBottomOf
layout_constraintStart_toEndOf
layout_constraintStart_toStartOf
layout_constraintEnd_toStartOf
layout_constraintEnd_toEndOf
  • 그 외에도, 세부적인 위치 조정을 위해 다음과 같은 것을 할 수 있습니다.

    • 'parent'를 이용해서 부모 계층 View와 제약 조건을 설정할 수 있습니다.
    • 'margin', 'padding' 을 이용하여, 여백을 설정할 수 있습니다.

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

  • 기존의 Layout으로 화면을 구성하게 된다면, 다음과 같이 복잡한 계층 구조가 만들어집니다.
<RelativeLayout>
  <ImageView />
  <RelativeLayout>
    <TextView />
    <LinearLayout>
      <TextView />
      <EditText />
    </LinearLayout>
    <TextView />
  </RelativeLayout>
  <LinearLayout >
    <Button />
    <Button />
  </LinearLayout>
</RelativeLayout>
  • View의 drawing process에 따르면, 위와 같은 View tree 계층 구조에서 하향식 탐색으로 이루어 집니다.

    • 이는 View 계층 구조가 복잡해 질수록, 디바이스가 View를 그리기 위해 더 많은 연산 능력을 필요로 하게 됩니다.
  • ContraintLayout으로 화면을 구성하게 된다면, 다음과 같이 수평적인 계층 구조가 만들어집니다.

<android.support.constraint.ConstraintLayout>
  <ImageView />
  <TextView />
  <TextView />
  <EditText />
  <TextView />
  <Button />
  <Button />
</android.support.constraint.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