เรียนรู้ว่า Material Design คืออะไร — ระบบการออกแบบของ Google ที่ตั้งอยู่บนหลักการของความเป็นวัตถุ ความลึก และความสามารถในการปรับตัว ซึ่งรวมแนวทางสำหรับภาษาภาพ แอนิเมชัน การจัดวาง และส่วนประกอบอินเทอร์เฟซ ใน Material Design 3 (Material You) ระบบประกอบด้วยโทนสีแบบไดนามิกตามวอลเปเปอร์ของอุปกรณ์ การพิมพ์แบบปรับตัวได้ และส่วนประกอบขั้นสูง ตามข้อมูลจาก Google I/O 2024 มีแอปพลิเคชันมากกว่า 3 ล้านรายการบน Google Play ที่ใช้ Material Design ทำให้เป็นระบบการออกแบบที่แพร่หลายที่สุดบน Android
ประเด็นสำคัญ
Material Design (ชื่อรหัส Project Quantum) คือระบบการออกแบบของ Google ประกาศครั้งแรกในงาน Google I/O 2014 และนำมาใช้ครั้งแรกใน Android 5.0 Lollipop เป้าหมายของ Material Design คือการสร้างภาษาภาพที่เป็นหนึ่งเดียวสำหรับผลิตภัณฑ์ทั้งหมดของ Google และแอปพลิเคชัน Android โดยอิงจากคุณสมบัติทางกายภาพของกระดาษและหมึก — “วัสดุ” (material) แตกต่างจากการออกแบบแบบแบน (Flat Design) Material Design เพิ่มความลึกทางกายภาพ เงา ชั้น และแอนิเมชันที่สมจริง
ตั้งแต่ปี 2014 Material Design ผ่านสามเวอร์ชันหลัก: Material 1 (2014) — แนวทางดั้งเดิมพร้อมการ์ดและปุ่มการกระทำลอย; Material 2 (2018) — ภาษาภาพที่เรียบง่ายขึ้น ระยะห่างที่เพิ่มขึ้น เน้นการพิมพ์; Material 3 / Material You (2021) — โทนสีแบบไดนามิกที่สร้างจากวอลเปเปอร์ของอุปกรณ์ การปรับแต่งเฉพาะบุคคล ตามข้อมูล Google Play Console (2024) 78% ของ 1,000 แอปพลิเคชันชั้นนำบน Google Play ใช้ Material Components สำหรับ Android
Material Design ไม่ใช่แค่ชุด UI แต่เป็นระบบการออกแบบที่สมบูรณ์: แนวทางการเข้าถึง (a11y) แอนิเมชัน (Motion) เค้าโครงที่ปรับเปลี่ยนได้ ส่วนประกอบ (TopAppBar, BottomNavigation, Navigation Drawer) การพิมพ์ (Material Type Scale) และสัญลักษณ์ (Material Symbols) ที่ IT Sectr เราใช้ Material Design เป็นระบบการออกแบบพื้นฐานสำหรับโปรเจกต์ Android ตั้งแต่ปี 2014 โดยปรับแต่งให้เข้ากับแบรนด์ของลูกค้าผ่าน Material Theme Builder
ความเป็นวัตถุ (วัสดุเป็นอุปมา) — หลักการสำคัญของ Material Design ที่ยืมคุณสมบัติทางกายภาพของกระดาษ: วัสดุมีพื้นผิว ความหนา (1dp) ทอดเงา (Elevation) และครอบครองพื้นที่ (Bounds) องค์ประกอบอินเทอร์เฟซ — การ์ด ปุ่ม แผง — ทำตัวเหมือนวัตถุทางกายภาพ: ยกขึ้นเมื่อกด (เอฟเฟกต์ระลอกคลื่น) ซ้อนทับกัน (แกน Z) และเคลื่อนไหวเมื่อปรากฏ (motion)
ความลึก (Depth) สร้างขึ้นผ่าน Elevation — คุณสมบัติของวัสดุที่กำหนดตำแหน่งบนแกน Z ยิ่ง Elevation สูง (8dp, 16dp) เงาที่ทอดโดยองค์ประกอบก็ยิ่งมากขึ้น การ์ดมี Elevation 1–2dp, FAB — 6dp, Modal BottomSheet — 16dp ความลึกใช้เพื่อสื่อถึงลำดับชั้น: หน้าต่างโมดอลและไดอะล็อกอยู่เหนือเนื้อหาเสมอ Navigation Drawer อยู่เหนือ Action Bar ความลึกแทนที่มุมมอง 3 มิติด้วยชั้น Z แบน รักษาประสิทธิภาพการเรนเดอร์
การเคลื่อนไหว (Motion) — แอนิเมชันใน Material Design ไม่ใช่เพื่อการตกแต่งแต่เพื่อประโยชน์ใช้สอย แอนิเมชันควร: 1) ชี้นำความสนใจของผู้ใช้ (การ์ดขยายพร้อมรายละเอียด) 2) อธิบายความสัมพันธ์เชิงพื้นที่ (AppBar เปลี่ยนเป็น TopAppBar เมื่อเลื่อน) 3) รับประกันการเปลี่ยนภาพที่ราบรื่น (การเปลี่ยนองค์ประกอบที่ใช้ร่วมกันระหว่างหน้าจอ) ตาม Google Material Guidelines (2024) แอนิเมชันไม่ควรเกิน 300ms สำหรับการโต้ตอบระดับจุลภาคและ 500ms สำหรับการเปลี่ยนระหว่างหน้าจอ — แอนิเมชันที่นานกว่าจะถูกรับรู้ว่าเป็นความล่าช้า
Material You (Material Design 3) คือการอัปเดตครั้งใหญ่ที่สุดของระบบการออกแบบ นำเสนอในปี 2021 พร้อมกับ Android 12 นวัตกรรมหลัก — สีแบบไดนามิก (Monet): ระบบแยกสีหลัก 5 สีจากวอลเปเปอร์ของอุปกรณ์โดยอัตโนมัติและสร้างจานสีที่สมบูรณ์ 15 โทน (primary, secondary, tertiary, error พร้อมตัวแปร light/dark) โดยมีอัตราส่วนความคมชัด WCAG AA ที่คำนวณแล้ว
โมเดลสีของ Material You สร้างขึ้นบน HCT (Hue, Chroma, Tone) — พื้นที่สีที่พัฒนาโดย Google ซึ่งรวมการรับรู้ของมนุษย์ (Hue) เข้ากับความอิ่มตัว (Chroma) และความสว่าง (Tone) แตกต่างจาก HSL/HSV HCT รับประกันว่าโทนสีที่สร้างขึ้นทั้งหมดมีความคมชัดที่ต้องการบนพื้นหลังสีขาวและสีดำ Google Material Guidelines (2024) แนะนำให้ใช้เฉพาะรูปแบบโทนของจานสีหลักสำหรับข้อความ โทน surface สำหรับพื้นหลัง และ primary-container สำหรับพื้นผิวที่เน้น
ผู้ใช้สามารถเลือกจาก 4 รูปแบบการปรับแต่ง: TonalSpot (สีหลักจากวอลเปเปอร์) Vibrant (สีที่อิ่มตัวมากที่สุด) Expressive (สีสว่างเพิ่มเติม) Neutral (จานสีเดียว) Material Theme Builder (material-foundation.github.io) ช่วยให้ส่งออกธีม Material 3 ไปยัง XML, Compose Theme, CSS และแม้แต่ปลั๊กอิน Figma
Material Components สำหรับ Android (MDC-Android) คือไลบรารีอย่างเป็นทางการของ Google ที่ให้ส่วนประกอบ View พร้อมใช้งานซึ่งปฏิบัติตามแนวทางของ Material Design สำหรับเค้าโครง XML ไลบรารีสามารถใช้งานได้ผ่าน dependencies com.google.android.material:material เวอร์ชันปัจจุบัน ณ เดือนมิถุนายน 2026 — 1.12.0
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/topAppBar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:title="@string/app_name"
app:menu="@menu/main_menu" />
<com.google.android.material.card.MaterialCardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardElevation="2dp"
app:strokeWidth="1dp"
app:strokeColor="@color/outline">
<LinearLayout android:orientation="vertical" ...>
<com.google.android.material.textfield.TextInputLayout
style="@style/Widget.Material3.TextInputLayout.OutlinedBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:endIconMode="clear_text">
<com.google.android.material.textfield.MaterialAutoCompleteTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/city_hint" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.button.MaterialButton
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/Widget.Material3.Button.MaterialYou"
android:text="@string/submit" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_add"
app:layout_anchor="@id/topAppBar"
app:layout_anchorGravity="bottom|end" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>ตัวอย่างแสดงหน้าจอ Material พร้อม MaterialToolbar (TopAppBar), MaterialCardView พร้อมระยะห่างและเส้นขอบแบบกำหนดเอง, TextInputLayout พร้อมรายการแบบเลื่อนลง และ MaterialButton ในสไตล์ Material3 FAB ถูกยึดกับ Toolbar — รูปแบบมาตรฐานสำหรับอินเทอร์เฟซ master-detail
@Composable
fun MaterialYouScreen() {
val colorScheme = MaterialTheme.colorScheme
Scaffold(
topBar = {
TopAppBar(
title = { Text("Material You") },
colors = TopAppBarDefaults.topAppBarColors(
containerColor = colorScheme.primaryContainer,
titleContentColor = colorScheme.onPrimaryContainer
)
)
},
floatingActionButton = {
FloatingActionButton(
onClick = { },
containerColor = colorScheme.tertiaryContainer
) {
Icon(
imageVector = Icons.Default.Add,
contentDescription = "Add"
)
}
}
) { paddingValues ->
Column(
modifier = Modifier.padding(paddingValues)
) {
OutlinedTextField(
value = "",
onValueChange = { },
label = { Text("เมือง") },
colors = OutlinedTextFieldDefaults.colors(
focusedBorderColor = colorScheme.primary,
unfocusedBorderColor = colorScheme.outline
)
)
Button(
onClick = { },
modifier = Modifier.fillMaxWidth()
) {
Text("ส่ง")
}
}
}
}
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MaterialTheme(
colorScheme = dynamicLightColorScheme(this),
typography = MaterialTheme.typography
) {
MaterialYouScreen()
}
}
}
}โค้ดสาธิตธีม Material You ใน Compose: dynamicLightColorScheme() สร้างโทนสีโดยอัตโนมัติตามวอลเปเปอร์ของอุปกรณ์ Scaffold จัดเตรียมโครงสร้างมาตรฐานพร้อม TopAppBar และ FAB OutlinedTextField และ Button เป็นส่วนประกอบ Material 3 ที่สีมาจาก colorScheme แบบไดนามิก เมื่อวอลเปเปอร์เปลี่ยน สีทั้งหมดของแอปจะอัปเดตโดยอัตโนมัติ — การปรับแต่งเฉพาะบุคคลโดยไม่ต้องแก้ไขโค้ด
Material Components สำหรับ iOS (MDC-iOS) คือไลบรารีที่ให้ส่วนประกอบ UIKit ดั้งเดิมซึ่งใช้งาน Material Design บน iOS เนื่องจาก iOS มีระบบการออกแบบของตนเอง (Human Interface Guidelines) ส่วนประกอบ Material บน iOS จึงถูกใช้น้อยกว่าแต่เป็นที่ต้องการในแอปพลิเคชันข้ามแพลตฟอร์มที่ต้องการรูปแบบภาพที่เป็นหนึ่งเดียวกันระหว่าง Android และ iOS
MDC-iOS ประกอบด้วย AppBar, BottomNavigation, Cards, Chips, Dialogs, Snackbar, Tabs และ TextFields ที่จัดสไตล์สำหรับ Material Design ไลบรารีสามารถใช้งานได้ผ่าน CocoaPods (pod 'MaterialComponents') และ Swift Package Manager Apple Human Interface Guidelines (2024) ไม่แนะนำให้แทนที่ส่วนประกอบ UIKit ดั้งเดิมทั้งหมดด้วยส่วนประกอบที่เทียบเท่าของ Material แต่อนุญาตให้ใช้ส่วนประกอบ Material สำหรับอินเทอร์เฟซแบบกำหนดเองโดยมีเงื่อนไขว่าต้องรักษาการนำทางดั้งเดิม (NavigationStack, UITabBarController) ไว้
ที่ IT Sectr เราใช้ Material Components บน iOS เฉพาะสำหรับแอปที่พอร์ตมาจาก Android (โปรเจกต์ข้ามแพลตฟอร์มด้วย Flutter หรือ Kotlin Multiplatform) สำหรับแอป iOS ดั้งเดิม เราปฏิบัติตาม HIG และใช้ UIKit/SwiftUI พร้อมการสร้างแบรนด์แบบกำหนดเอง ตามการสำรวจของ Swift Community (2024) นักพัฒนา 8% ใช้ Material Components สำหรับ iOS โดยส่วนใหญ่ในโปรเจกต์แบบไฮบริด
Material Design ไม่ใช่ระบบการออกแบบเดียวในตลาด คู่แข่งหลัก: Apple Human Interface Guidelines (iOS/macOS), Fluent Design (Microsoft), Carbon (IBM), Polaris (Shopify), Lightning (Salesforce) แต่ละระบบถูกปรับให้เหมาะสมสำหรับแพลตฟอร์มของตน: Material Design สำหรับ Android, HIG สำหรับ iOS, Fluent สำหรับ Windows การเลือกระบบการออกแบบถูกกำหนดโดยแพลตฟอร์มเป้าหมายและระบบนิเวศ
| คุณลักษณะ | Material Design | Apple HIG | Fluent Design |
|---|---|---|---|
| แพลตฟอร์ม | Android, Web, Flutter | iOS, macOS, watchOS, tvOS | Windows 10/11, .NET MAUI |
| ระบบสี | HCT (Hue-Chroma-Tone) | Semantic + สีเน้น | Acrylic + Reveal highlight |
| การพิมพ์ | Material Type Scale (13 รูปแบบ) | SF Pro (9 รูปแบบ) | Segoe UI Variable |
| การปรับแต่งเฉพาะบุคคล | สีไดนามิก (Monet) | ไม่มี | การตั้งค่าสีเน้น |
| แอนิเมชัน | ระบบ Motion (300–500ms) | แอนิเมชันสปริง UIKit | Fluent Motion (Fluent 2) |
| โอเพนซอร์ส | ใช่ (GitHub, Apache 2.0) | ไม่ (กรรมสิทธิ์) | ใช่ (GitHub, MIT) |
ข้อได้เปรียบหลักของ Material Design คือความเปิดกว้างและลักษณะข้ามแพลตฟอร์ม แนวทาง ส่วนประกอบ และเครื่องมือ (Material Theme Builder) มีให้ใช้ฟรี ทำให้ระบบเป็นที่นิยมในหมู่สตาร์ทอัพและนักพัฒนาอิสระ Apple HIG เชื่อมโยงอย่างแน่นหนากับระบบนิเวศของ Apple แต่รับประกันความสอดคล้องที่ดีที่สุดกับความคาดหวังของแพลตฟอร์ม สำหรับโปรเจกต์ข้ามแพลตฟอร์ม Material Design เป็นตัวเลือกที่เหมาะสมที่สุดด้วย Flutter และ Jetpack Compose Multiplatform
คำถามที่พบบ่อย
ในทางเทคนิค — ไม่ Google ไม่ต้องการให้ใช้ Material Components ภาคบังคับ คำแนะนำ — ใช่ Material Design เป็นส่วนหนึ่งของ Compatibility Test Suite (CTS) และ Android Design Guidelines แอปพลิเคชันที่ไม่ใช้ส่วนประกอบ Material อาจมีความสอดคล้องกับแอประบบ Android น้อยกว่า Google Play Console ไม่ปฏิเสธแอปที่ไม่ใช้ Material Design แต่ผู้ใช้คาดหวังรูปแบบที่คุ้นเคย — FAB, BottomNavigation, TopAppBar
Material Theme Builder (material-foundation.github.io) ช่วยให้คุณอัปโหลดโลโก้แบรนด์และสร้างธีมแบบกำหนดเอง ใน 3 คลิก เครื่องมือแยกสีหลัก สร้างจานสี 15 โทน และส่งออกธีมไปยัง XML, Compose และ Figma นอกจากนี้คุณสามารถปรับแต่งการพิมพ์ (Material Type Scale) และรูปร่างของส่วนประกอบ (Shape scheme) — การปัดมุมสำหรับการ์ด ปุ่ม และไดอะล็อก การปรับแต่งต้องไม่ละเมิดกฎพื้นฐานของ Material Design (ความคมชัด Elevation Motion)
Dynamic Color (Monet) คือกลไก Android 12+ ที่สร้างโทนสีของแอปโดยอัตโนมัติตามวอลเปเปอร์ของอุปกรณ์ ระบบวิเคราะห์สีเด่นของวอลเปเปอร์ผ่านอัลกอริทึม K-means แปลงเป็นพื้นที่ HCT สร้างโทนพื้นฐาน 5 โทน (primary, secondary, tertiary, neutral, error) และ 3 รูปแบบของแต่ละโทน (container, on-container, fixed) นักพัฒนาเพียงเรียก dynamicLightColorScheme() ใน Compose หรือใช้ DynamicColors.applyToActivity() ใน XML และส่วนประกอบ Material 3 ทั้งหมดจะใช้สีใหม่โดยอัตโนมัติ
ไม่มีพอร์ตโดยตรงของ Material Design สำหรับ SwiftUI Material Components สำหรับ iOS เขียนด้วย UIKit สำหรับ SwiftUI คุณสามารถใช้ตัวปรับแต่ง View แบบกำหนดเองที่สร้างสไตล์ Material ขึ้นมาใหม่ (เงา material ผ่าน .shadow(), การยกระดับผ่าน .zIndex(), เอฟเฟกต์ระลอกคลื่นผ่าน .hoverEffect()) สำหรับโปรเจกต์ข้ามแพลตฟอร์มบน Flutter Material Design ถูกรวมไว้ในตัว — Flutter มีการใช้งาน Material 3 อย่างสมบูรณ์ในแพ็คเกจ flutter/material.dart
Material You คือชื่อทางการตลาดของ Material Design 3 (เวอร์ชัน 3) ไม่ใช่ระบบแยกต่างหาก แต่เป็นการอัปเดตครั้งใหญ่ที่สุดของ Material Design ที่นำเสนอในปี 2021 รวมถึงสีแบบไดนามิก (Monet) การพิมพ์แบบปรับตัวได้ (Material Type Scale v2) ส่วนประกอบใหม่ (NavigationBar แทน BottomNavigation, NavigationRail) และแนวทางการเข้าถึงที่อัปเดต คำว่า Material You เน้นการปรับแต่งเฉพาะบุคคล — อินเทอร์เฟซ “ปรับให้เข้ากับคุณ” ผ่าน Dynamic Color
สรุป
เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร
IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ