Material Design은 안드로이드 앱의 사용자 인터페이스(UI)를 디자인하기 위한 표준 가이드라인이다. Material Design은 사용자 경험을 향상시키고 일관성 있는 디자인을 제공하기 위해 뷰 타입과 레이아웃을 정의하고 있다.
뷰 타입
Material Design에서는 안드로이드 앱에서 일반적으로 사용되는 다양한 뷰 타입을 정의하고 있다. 몇 가지 중요한 뷰 타입은 다음과 같다.
텍스트 뷰 (TextView)
텍스트를 표시하는 데 사용되는 기본적인 뷰 타입이다. Material Design에서는 텍스트의 크기, 색상, 글꼴 등을 통해 일관성 있고 가독성 있는 텍스트 표시를 지향하고 있다.
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, Material Design!"
android:textSize="16sp"
android:textColor="@color/black" />
버튼 (Button)
사용자의 상호작용을 유도하기 위해 사용되는 뷰 타입이다. Material Design에서는 그림자 효과, 색상 변화 등을 통해 사용자가 버튼을 눌렀을 때의 시각적 피드백을 제공한다.
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click Me"
android:backgroundTint="@color/primaryColor" />
이미지 뷰 (ImageView)
이미지를 표시하는 데 사용되는 뷰 타입이다. Material Design에서는 이미지의 크기와 비율을 유지하며 그림자 효과를 통해 입체적이고 현실적인 이미지 표현을 지향하고 있다.
<ImageView
android:id="@+id/imageView"
android:layout_width="200dp"
android:layout_height="200dp"
android:src="@drawable/image"
android:scaleType="centerCrop" />
레이아웃
Material Design에서는 다양한 레이아웃을 제공하여 화면의 구조를 정의하고 있다. 몇 가지 중요한 레이아웃은 다음과 같다.
리니어 레이아웃 (LinearLayout)
자식 뷰들을 수평이나 수직으로 정렬하는 데 사용되는 레이아웃이다. Material Design에서는 여백과 정렬을 통해 일관성 있고 균형있는 레이아웃을 지향하고 있다.
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
<!-- 자식 뷰들 -->
</LinearLayout>
상대 레이아웃 (RelativeLayout)
자식 뷰들을 상대적인 위치에 배치하는 데 사용되는 레이아웃이다. Material Design에서는 제약(Constraint)을 활용하여 유연하고 동적인 레이아웃을 제공하기 위해 제약 레이아웃(ConstraintLayout)을 권장하고 있다.
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- 자식 뷰들 -->
</androidx.constraintlayout.widget.ConstraintLayout>
Material Design의 뷰 타입과 레이아웃은 안드로이드 앱의 사용자 인터페이스를 효과적으로 디자인하고 사용자 경험을 향상시키는 데 중요한 역할을 한다. Material Design의 가이드라인을 준수하면서 각 뷰 타입과 레이아웃을 적절하게 활용하면 더욱 멋진 앱을 개발할 수 있다.
Material Design - Components Android Developers - Layouts