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

[20230604] 안드로이드 사전 과제 - 이지훈 #63

Open
easyhooon opened this issue Jun 4, 2023 · 0 comments
Open

[20230604] 안드로이드 사전 과제 - 이지훈 #63

easyhooon opened this issue Jun 4, 2023 · 0 comments

Comments

@easyhooon
Copy link

1. UI 구현 방식에 있어 XML과 Jetpack Compose의 가장 구별되는 차이점은 무엇인가요?

XML

  • 뷰를 구현할 경우 기본적으로 상속의 방법을 이용하기 때문에 클래스의 계층 구조가 복잡해지는 단점을 가지고 있다.
  • XML 로 작성한 UI 를 액티비티 또는 프래그먼트에서 inflate 하기 위해 필수적으로 바인딩 해줘야 한다. 따라서 바인딩하는 코드가 반드시 필요하다.
  • 상태 변화에 대한 처리를 개발자가 명시적으로 관리해야 한다.
  • 레이아웃과 그와 관련된 로직이 분리되어 있어, UI와 그에 관련된 동작을 한 눈에 파악하기 어렵다는 단점이 있다.

Jetpack Compose

  • 컴포저블 함수를 사용해 UI 를 구성할 경우 기본적으로 합성의 방법을 이용하기 때문에 구성 요소의 재사용성을 높이고, 클래스 계층의 복잡성을 줄일 수 있다.
  • 액티비티 또는 컴포저블 함수내에서 직접 UI 를 선언하는 방식으로 화면을 구현하기 때문에, XML 처럼 바인딩 해주는 코드가 필요 없다.
  • 상태가 변경되면 해당 상태에 의존하는 컴포저블 함수가 자동으로 업데이트된다
  • UI 와 관련한 모든 요소를 한 곳에서 관리할 수 있기 때문에 코드의 가독성, 유지 관리성에서 장점을 가진다.

2. 아래 영상을 시청하고 Material3의 업데이트와 Jetpack Compose와 관련된 주요 내용을 정리하며 학습해주세요.

컴포넌트의 안정적인 사용과 추가된 기능

  • 새로 업데이트 된 Material3 를 사용하면 컴포넌트에 변경사항이 있을 때도 안정적으로 컴포넌트들을 사용할 수 있다.
  • bottomsheet : bottomsheet 외부와 상호작용할 수 있고, rounded corner, bottomsheet을 끌어올리는 위치를 선택적으로 지정할 수 있다.
  • Date Picker : 날짜를 선택하거나 선택 범위를 지정하는 등의 기능 업데이트를 통해 사용자가 날짜를 더욱 쉽고 편리하게 선택할 수 있게 되었다.

M2 -> M3 Migration

  • Material3를 사용하고자 한다면 Material2와 동시에 사용해서는 안 된다. UI/UX 스타일이나 compose 구현방식이 다르기 때문이다.
  • 큰 프로젝트의 경우 화면, 모듈 하나씩 점진적으로 M3로 버전업 해야 한다.
  • 디자인팀도 전체적으로 M3를 사용해야 의미가 있다.
  • 더 다양한 색상을 지원하고 타이포그래피의 매개변수 이름 또한 변경되었다.
  • material3를 적용하게 되면 버튼/플로팅 버튼 등의 모양에 변화가 생기고, 스위치 또한 thumIcon을 설정할 수 있도록 추가 되었다. -
  • 그 외에도 appbar, navigation component, bottomsheet 등에서 다양한 디자인과 기능을 사용할 수 있도록 제공한다.

Jetpack Compse 에서 Material3를 적용

  • 사용자 정의 @composable 함수를 만들고 그 안에 dark/light 여부와 color를 정의한다.
  • MaterialTheme를 만들어서 미리 정의해둔 color platte를 넘겨주면 된다.

접근성

  • 모든 material3 componant, 색상, 타이포그래피에 접근이 가능하다
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