1. Prinsip Dasar Mobile Design
Desain UI/UX mobile memiliki tantangan unik yang berbeda dari desain web desktop: layar kecil, interaksi berbasis sentuhan (touch), konteks penggunaan yang beragam (di jalan, sambil makan, di kasur), dan keterbatasan input. Memahami prinsip dasar mobile design sangat penting sebelum mulai mendesain.
10 Prinsip Desain Mobile
| No | Prinsip | Penjelasan |
|---|---|---|
| 1 | Kesederhanaan (Simplicity) | Hilangkan elemen yang tidak perlu. Setiap layar harus punya satu tujuan utama. |
| 2 | Konsistensi | Gunakan pola UI yang sama di seluruh aplikasi — warna, ikon, tombol, spacing. |
| 3 | Feedback yang Jelas | Setiap aksi user harus mendapat respons visual — loading, animasi, snackbar. |
| 4 | Thumb-Friendly Zone | Letakkan aksi utama di area yang mudah dijangkau ibu jari (bagian bawah layar). |
| 5 | Minimalkan Input | Gunakan picker, autocomplete, dan scan daripada mengetik manual. |
| 6 | Progressive Disclosure | Tampilkan informasi bertahap — jangan tampilkan semuanya sekaligus. |
| 7 | Error Prevention | Cegah error sebelum terjadi — validasi real-time, konfirmasi sebelum hapus. |
| 8 | Offline Capability | Aplikasi harus tetap berguna tanpa koneksi internet. |
| 9 | Performance First | Animasi halus 60fps, loading < 2 detik, lazy loading konten. |
| 10 | User Control | Berikan user kemampuan untuk undo, cancel, dan kembali kapan saja. |
┌─────────────────────────────────┐ │ ┌───────────────────────────┐ │ │ │ │ │ ← Hard to reach │ │ ⚠️ Danger Zone │ │ (perlu stretch) │ │ (jarang dijangkau) │ │ │ │ │ │ │ ├───────────────────────────┤ │ │ │ │ │ │ │ 🟡 OK Zone │ │ ← Reachable with effort │ │ (bisa dijangkau) │ │ │ │ │ │ │ ├───────────────────────────┤ │ │ │ │ │ │ │ 🟢 Natural Zone │ │ ← Easy to reach │ │ (naturally dijangkau) │ │ (ibu jari alami) │ │ │ │ │ └───────────────────────────┘ │ └─────────────────────────────────┘ Letakkan tombol & aksi penting di GREEN ZONE!
2. Touch Targets & Interaksi
Ukuran jari manusia rata-rata adalah 10-14mm untuk ujung jari dan 8-10mm untuk ibu jari. Karena itu, touch target minimum harus cukup besar agar pengguna bisa menekan dengan akurat tanpa frustrasi.
Standar Ukuran Touch Target
| Platform | Minimum | Recommended | Sumber |
|---|---|---|---|
| Material Design (Android) | 48dp × 48dp | 48dp dengan 8dp spacing | Google Material Guidelines |
| Human Interface (iOS) | 44pt × 44pt | 44pt dengan jarak antar elemen | Apple HIG |
| WCAG (Accessibility) | 44×44 CSS px | 48×48 CSS px | WCAG 2.2 Target Size |
| Best Practice Umum | 48×48 px (physical) | 7-10mm di layar | Research Fitts's Law |
Prinsip Touch Interaction
Fitts's Law menyatakan bahwa waktu untuk menekan target bergantung pada ukuran target dan jarak ke target. Semakin besar target dan semakin dekat, semakin cepat pengguna bisa menekannya. Ini adalah alasan mengapa tombol aksi utama (FAB, Bottom Navigation) diletakkan di bagian bawah layar — dekat dengan ibu jari.
| Interaksi | Deskripsi | Best Practice |
|---|---|---|
| Tap | Sentuhan sekali — aksi utama | 48dp minimum, beri feedback visual |
| Long Press | Tekan tahan — aksi sekunder/context menu | Beri haptic feedback (getar) |
| Swipe | Geser — navigasi atau delete | Swipe kiri/kanan untuk action, scroll untuk list |
| Pull to Refresh | Tarik ke bawah — refresh data | Gunakan indicator yang jelas (spinner) |
| Pinch to Zoom | Jepit dua jari — zoom in/out | Untuk gambar dan peta |
| Double Tap | Tap dua kali — like/favorite | Animasi heart/bintang yang jelas |
Gesture Navigation Modern
Android 10+ dan iOS menggunakan gesture navigation sebagai default. Ini berarti bagian bawah layar digunakan untuk system gesture (swipe up untuk home, swipe dari tepi untuk back). Desain aplikasi harus mempertimbangkan hal ini:
# Gesture Navigation Best Practices: 1. JANGAN letakkan elemen interaktif di tepi bawah layar → Sistem gesture area (±20dp dari bawah) 2. Gunakan Edge-to-edge design → Content memenuhi seluruh layar → Padding/bottom inset untuk menghindari gesture area 3. Bottom Navigation harus di atas gesture bar → Gunakan WindowInsets untuk menghitung safe area 4. Swipe gesture di dalam app harus tidak konflik → Dengan system back gesture (swipe dari tepi kiri/kanan) 5. Beri visual hint untuk gesture yang tidak obvious → Tooltip, tutorial onboarding, atau gesture hint animation
3. Navigasi Patterns
Pola navigasi yang tepat membantu pengguna menemukan apa yang mereka butuhkan dengan cepat dan intuitif. Ada beberapa pola navigasi yang umum digunakan di aplikasi mobile:
1. Bottom Navigation 2. Tab Bar (top)
┌─────────────────┐ ┌─────────────────┐
│ │ │ [Tab1] [Tab2] │
│ Content Area │ │─────────────────│
│ │ │ │
│ │ │ Content Area │
├─────────────────┤ │ │
│🏠 🔍 ➕ 💬 👤│ └─────────────────┘
└─────────────────┘
3. Drawer Navigation 4. Stacked Navigation
┌──┬──────────────┐ ┌─────────────────┐
│ │ │ │ ← Screen A │
│ │ Content │ │─────────────────│
│ │ Area │ │ ← Screen B │
│ │ │ │─────────────────│
│ │ │ │ ← Screen C │
└──┴──────────────┘ │ (current) │
└─────────────────┘
Memilih Pola Navigasi yang Tepat
| Pola | Kapan Digunakan | Contoh App |
|---|---|---|
| Bottom Navigation | 3-5 section utama yang sering diakses | Instagram, WhatsApp, Spotify |
| Top Tab Bar | Sub-kategori dalam satu section | Google Play Store, Settings |
| Navigation Drawer | Banyak section (>5), menu jarang diakses | Gmail, Google Maps |
| Stack Navigation | Alur linier (wizard, checkout) | Formulir pendaftaran, onboarding |
| Search-First | Konten sangat banyak, pencarian utama | YouTube, Tokopedia, Shopee |
| Hub & Spoke | Dashboard dengan beberapa tools | Apple Watch, smart home app |
Bottom Navigation Best Practices
- Jangan lebih dari 5 item — terlalu banyak membuat bingung dan target terlalu kecil
- Gunakan ikon + label — ikon saja sulit dipahami tanpa label teks
- Highlight item aktif — gunakan warna berbeda atau filled icon
- Jangan scroll — semua item harus terlihat sekaligus
- Konsisten — posisi dan urutan harus sama di semua halaman
4. Tipografi Mobile
Tipografi yang baik di mobile bukan hanya soal memilih font yang cantik — tapi tentang keterbacaan (readability) dan hierarchy (mana yang paling penting). Di layar kecil, setiap piksel berharga.
Standar Ukuran Font Mobile
| Elemen | Ukuran (sp/dp) | Weight | Keterangan |
|---|---|---|---|
| Heading H1 | 28-34sp | Bold (700) | Judul halaman utama |
| Heading H2 | 22-28sp | Semi-bold (600) | Sub-judul, section header |
| Heading H3 | 18-22sp | Medium (500) | Judul card, item group |
| Body | 14-16sp | Regular (400) | Teks utama konten |
| Caption | 12-14sp | Regular (400) | Teks bantuan, metadata |
| Button | 14-16sp | Medium (500) | Teks tombol — ALL CAPS atau Title Case |
| Minimum | 12sp | - | Jangan lebih kecil dari 12sp |
Font Family yang Direkomendasikan
| Platform | Font Default | Alternatif Bagus |
|---|---|---|
| Android (Material) | Roboto | Google Sans, Noto Sans |
| iOS (HIG) | SF Pro (San Francisco) | NY Times (serif), SF Rounded |
| Cross-Platform | - | Inter, Poppins, Open Sans, Lato |
Line Height & Spacing
# Typography Best Practices untuk Mobile: 1. LINE HEIGHT - Body text: 1.4-1.6x dari font size - Heading: 1.2-1.3x dari font size - Contoh: 16sp font → line-height 22-26sp 2. LINE LENGTH - Ideal: 40-60 karakter per baris - Mobile: layar kecil biasanya sudah pas 3. LETTER SPACING - Body text: normal (0) - ALL CAPS text: +0.5-1.0sp (agar tidak terlalu rapat) - Caption: +0.2-0.5sp 4. KONTRAS - Teks utama: #000000 atau #212121 di background putih - Teks sekunder: #666666 atau #757575 - Minimum contrast ratio: 4.5:1 (WCAG AA) 5. FONT WEIGHT HIERARCHY - 700 (Bold) → Judul - 500 (Medium) → Sub-judul, label - 400 (Regular) → Body text - JANGAN gunakan lebih dari 2-3 font weight dalam satu app
5. Warna & Visual Hierarchy
Warna adalah alat komunikasi yang powerful. Dalam desain mobile, warna bukan hanya estetika — tapi juga informasi: mana yang penting, mana yang bisa diklik, mana yang error, dan mana yang sukses.
Color System untuk Mobile App
| Warna | Fungsi | Contoh Penggunaan |
|---|---|---|
| Primary | Warna utama brand — CTA, link, aktif state | Tombol utama, header, ikon aktif |
| Secondary | Aksen — pendukung primary | Tombol sekunder, chip, badge |
| Surface | Latar belakang elemen | Card, bottom sheet, dialog |
| Background | Latar belakang utama layar | Background halaman |
| Error/Semantic | Status dan feedback | 🔴 Error, 🟢 Success, 🟡 Warning, 🔵 Info |
| Neutral | Teks, divider, ikon non-aktif | Teks body, border, placeholder |
Semantic Colors (Warna Status)
# ===== SEMANTIC COLORS ===== 🟢 Success: #4CAF50 (Green) → Berhasil, konfirmasi, online status 🔴 Error: #F44336 (Red) → Error, hapus, logout, bahaya 🟡 Warning: #FF9800 (Orange) → Peringatan, perhatian, pending 🔵 Info: #2196F3 (Blue) → Informasi, link, help # ===== DARK MODE CONSIDERATIONS ===== Light Mode: - Background: #FFFFFF - Surface: #F5F5F5 - Text Primary: #212121 - Text Secondary: #757575 Dark Mode: - Background: #121212 - Surface: #1E1E1E - Text Primary: #FFFFFF (atau #E0E0E0) - Text Secondary: #AAAAAA # ===== PENTING ===== - Hindari warna murni (#FF0000) — gunakan versi yang lebih halus - Primary color: gunakan 500 shade dari Material palette - Untuk aksesibilitas: kontras minimum 4.5:1 (AA) atau 7:1 (AAA) - Dark mode: JANGAN gunakan hitam murni (#000000) — gunakan #121212
Aturan warna klasik: 60% untuk warna dominan (background), 30% untuk warna sekunder (surface, card), dan 10% untuk warna aksen (CTA button, link, icon aktif). Ini menciptakan keseimbangan visual yang harmonis dan tidak membingungkan mata pengguna.
6. Aksesibilitas (Accessibility)
Aksesibilitas memastikan aplikasi bisa digunakan oleh semua orang — termasuk penyandang disabilitas (tunanetra, tunarungu, motor impairment, kognitif). Selain etika, aksesibilitas juga merupakan kewajiban hukum di banyak negara.
WCAG untuk Mobile
| Prinsip WCAG | Penjelasan | Implementasi Mobile |
|---|---|---|
| Perceivable | Informasi harus bisa dipersepsi semua orang | Alt text, caption video, kontras cukup |
| Operable | UI bisa dioperasikan semua orang | Touch target besar, navigasi keyboard/switch |
| Understandable | Konten dan UI mudah dipahami | Bahasa sederhana, error message jelas |
| Robust | Bisa diakses berbagai teknologi assistive | Semantic markup, content descriptions |
Checklist Aksesibilitas Mobile
# ===== MOBILE ACCESSIBILITY CHECKLIST ===== ## Visual ✅ Contrast ratio minimum 4.5:1 untuk teks normal ✅ Contrast ratio minimum 3:1 untuk teks besar (18sp+) ✅ Jangan hanya gunakan warna untuk menyampaikan informasi → Tambahkan ikon, label teks, atau pattern ✅ Support Dark Mode ✅ Teks bisa di-scale hingga 200% tanpa breaking layout ✅ Animasi tidak berkedip lebih dari 3x per detik (seizure safety) ## Touch & Motor ✅ Touch target minimum 48×48dp (Android) / 44×44pt (iOS) ✅ Jarak antar touch target minimum 8dp ✅ Jangan gunakan gesture-only interaction → Selalu ada alternatif tap/button ✅ Timeout bisa diperpanjang atau dihilangkan ✅ Area interaktif tidak terlalu dekat dengan tepi layar ## Screen Reader ✅ Semua gambar punya contentDescription (Android) / accessibilityLabel (iOS) ✅ Semua interaktif elemen punya label yang jelas ✅ Heading hierarchy yang benar (H1 → H2 → H3) ✅ Form field punya label yang terkait (not just placeholder) ✅ Live region untuk perubahan dinamis (loading, error) ## Cognitive ✅ Bahasa yang sederhana dan jelas ✅ Error message yang spesifik dan helpful ✅ Konfirmasi sebelum aksi destructive (hapus, logout) ✅ Breadcrumb / progress indicator untuk alur panjang ✅ Konsistensi — elemen yang sama berfungsi sama
7. Material Design (Android)
Material Design adalah sistem desain yang dikembangkan oleh Google pada tahun 2014. Material Design 3 (Material You) adalah versi terbaru yang mendukung dynamic color — warna yang berubah sesuai wallpaper pengguna.
Komponen Utama Material Design
| Komponen | Fungsi | Varian |
|---|---|---|
| Top App Bar | Header halaman dengan judul dan aksi | Center-aligned, Small, Medium, Large |
| Bottom Navigation | Navigasi utama 3-5 item | Icon only, Icon + Label |
| FAB | Tombol aksi utama yang mengambang | Regular, Small, Large, Extended |
| Card | Kontainer untuk konten terkait | Elevated, Filled, Outlined |
| Button | Aksi yang bisa diklik | Filled, Outlined, Text, Elevated, Tonal |
| Dialog | Popup untuk konfirmasi/pilihan | Basic, Full-screen |
| Snackbar | Feedback singkat di bagian bawah | Dengan/ tanpa aksi |
| Navigation Drawer | Menu samping untuk navigasi | Modal, Standard, Dismissible |
| Bottom Sheet | Panel dari bawah layar | Modal, Persistent |
| Chip | Filter, input, atau choice | Assist, Filter, Input, Suggestion |
Material You — Dynamic Color
// Material 3 Dynamic Color (Android 12+)
@Composable
fun MyAppTheme(content: @Composable () -> Unit) {
val dynamicColor = Build.VERSION.SDK_INT >= Build.VERSION_CODES.S
val colorScheme = when {
dynamicColor && isSystemInDarkTheme() ->
dynamicDarkColorScheme(LocalContext.current)
dynamicColor && !isSystemInDarkTheme() ->
dynamicLightColorScheme(LocalContext.current)
isSystemInDarkTheme() -> darkColorScheme(
primary = Color(0xFF90CAF9),
secondary = Color(0xFFCE93D8),
background = Color(0xFF121212),
surface = Color(0xFF1E1E1E),
)
else -> lightColorScheme(
primary = Color(0xFF1976D2),
secondary = Color(0xFF7B1FA2),
background = Color(0xFFFFFBFE),
surface = Color(0xFFFFFBFE),
)
}
MaterialTheme(
colorScheme = colorScheme,
typography = Typography(
headlineLarge = TextStyle(fontSize = 32.sp, fontWeight = FontWeight.Bold),
headlineMedium = TextStyle(fontSize = 24.sp, fontWeight = FontWeight.SemiBold),
bodyLarge = TextStyle(fontSize = 16.sp, lineHeight = 24.sp),
bodyMedium = TextStyle(fontSize = 14.sp, lineHeight = 20.sp),
labelLarge = TextStyle(fontSize = 14.sp, fontWeight = FontWeight.Medium),
),
content = content
)
}
8. Human Interface Guidelines (iOS)
Human Interface Guidelines (HIG) adalah panduan desain resmi dari Apple untuk platform iOS, macOS, watchOS, dan visionOS. HIG menekankan clarity, deference, dan depth.
3 Prinsip Utama HIG
| Prinsip | Penjelasan | Implementasi |
|---|---|---|
| Clarity | Teks harus terbaca, ikon harus presisi, dan dekorasi harus mendukung fungsi | Gunakan San Francisco font, ikon SF Symbols |
| Deference | UI harus mendukung konten, bukan mendominasi. Content is king. | Translucency, whitespace, konten yang fokus |
| Depth | Hierarchy visual melalui layer dan translucency | Blur effect, card stacking, parallax scrolling |
Perbedaan Material Design vs HIG
| Aspek | Material Design (Android) | Human Interface (iOS) |
|---|---|---|
| Desain Language | Material — elevation, ripple, bold color | Clean — translucency, whitespace, subtle |
| Navigasi Back | Gesture dari tepi atau tombol back sistem | Back button di top-left atau swipe dari kiri |
| Tab Bar | Bottom Navigation (Material You) | Tab Bar di bawah (iOS standard) |
| Dialog | Material AlertDialog (rounded corners) | UIAlertController (blur background) |
| Typography | Roboto (Google Sans) | San Francisco Pro (SF Pro) |
| Shadow & Depth | Elevation system (dp) | Shadow + blur translucency |
| Haptic Feedback | Vibration (HapticFeedback API) | Taptic Engine (UIImpactFeedbackGenerator) |
| Dark Mode | Surface color overlay (#121212) | Elevated background system |
Cross-Platform Design Tips
Saat membangun app cross-platform (React Native, Flutter), ikuti platform conventions untuk navigasi dan interaksi dasar, tapi gunakan branding yang konsisten untuk elemen visual. Contoh: gunakan swipe-back gesture di iOS dan tombol back di Android, tapi warna dan font tetap sama. Hindari mendesain yang "terlalu Android" atau "terlalu iOS" agar pengguna kedua platform merasa familiar.
9. Quiz: Uji Pemahamanmu!
Setelah membaca tutorial di atas, jawablah 5 pertanyaan berikut untuk menguji pemahamanmu tentang Mobile UI/UX Design: