본문 바로가기
IT/Android

Android, Compose material2 vs material3

by Cyber_ 2024. 4. 8.

0. 개요

  • 기존의 안드로이드 UI를 Compose를 사용하여 리팩토링를 하던 도중 @OptIn(ExperimentalMaterial3Api::class)를 붙여야 해결되는 문제에 봉착했다.
    뭐가 다른지 봤더니 meterial3는 아직 실험용인 부분들이 있다. 만약 본인이 초심자라면 많은 reference를 찾을 수 있기 때문에 meterial버전을 낮추길 권장한다.
//m2
implementation "androidx.compose.material:material:$m2-version"
//m3
implementation "androidx.compose.material3:material3:$m3-version"

1. meterial Design이란?

  • 구글이 모바일과 데스크탑 그리고 그 외 다양한 디바이스를 아우르는 하나의 일관된 디자인 가이드 라인을 공개했다. 그것이 바로 meterial Design
  • 질감이 느껴지는 표현(tactile surfaces)와 대담하고 선명한 그래핑 디자인(bold graphic design), 그리고 아름답고 직관적인 사용자 경험을 위한 자연스러운 애니메이션을 특징으로 함
  • Material Design은 UI/UX 디자인을 사용자 친화적인 환경으로 구축할 수 있도록 가이드를 정리해 놓은 것UI(User Interface): 어떻게 보이는가에 중점
    UX(User Experience): 어떻게 느끼는가
    보기에 이쁘면 UI의 목적 달성, 이쁘더라도 버튼이 무엇인지 어디에 글자를 입력할 수 있는지 사용자가 식별하고 어렵다면 UX의 목표는 미달성

2. Material2 vs Material3(Material You)

1) 이전해야하는가
Android developer 공식문서에서는 M2에서 M3에서의 이전을 권장하며 장기적인 두 버전의 공존을 지양한다.

  • 일부 M3 API는 실험용으로 간주된다. @OptIn(ExperimentalMaterial3Api::class)를 붙여줘야한다. 붙여주지않으면 빌드가 되지 않는다.This material API is experimental and is likely to change or to be removed in the future.
    필자의 경우 이 에러가 떴을 때 위의 어노테이션을 추가하고 해결됐다.
import androidx.compose.material3.ExperimentalMaterial3Api

@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun AppComposable() {
    // M3 composables
}
  • 더 다양한 M2와 M3의 차이는
    https://developer.android.com/jetpack/compose/designsystems/material2-material3?hl=ko#m2_3
    공식문서를 확인 하길 바란다.
  • 2023년 8월 기준으로 안드로이드 M3에 대한 Reference는 부족하다 만약 이미 M2를 활용하여 디자인을 해보고 지식이 풍부한 경우 공식문서를 확인하며 M3로 이전하는게 좋겠지만, 만약 당신이 처음 Metrial Design을 사용해본다면 우선 M2의 도움을 받는 것을 추천한다.

Reference

https://developers-kr.googleblog.com/2014/07/this-is-material-design.html
https://jason-api.tistory.com/35