Mobile

Mobile UI/UX Design: Prinsip & Best Practices

TOKEN

Panduan lengkap desain UI/UX untuk aplikasi mobile — prinsip desain mobile, touch targets, navigasi patterns, tipografi, warna, aksesibilitas, Material Design, dan Human Interface Guidelines

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
1Kesederhanaan (Simplicity)Hilangkan elemen yang tidak perlu. Setiap layar harus punya satu tujuan utama.
2KonsistensiGunakan pola UI yang sama di seluruh aplikasi — warna, ikon, tombol, spacing.
3Feedback yang JelasSetiap aksi user harus mendapat respons visual — loading, animasi, snackbar.
4Thumb-Friendly ZoneLetakkan aksi utama di area yang mudah dijangkau ibu jari (bagian bawah layar).
5Minimalkan InputGunakan picker, autocomplete, dan scan daripada mengetik manual.
6Progressive DisclosureTampilkan informasi bertahap — jangan tampilkan semuanya sekaligus.
7Error PreventionCegah error sebelum terjadi — validasi real-time, konfirmasi sebelum hapus.
8Offline CapabilityAplikasi harus tetap berguna tanpa koneksi internet.
9Performance FirstAnimasi halus 60fps, loading < 2 detik, lazy loading konten.
10User ControlBerikan user kemampuan untuk undo, cancel, dan kembali kapan saja.
Diagram: Thumb-Friendly Zone
┌─────────────────────────────────┐
│  ┌───────────────────────────┐  │
│  │                           │  │  ← 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 × 48dp48dp dengan 8dp spacingGoogle Material Guidelines
Human Interface (iOS)44pt × 44pt44pt dengan jarak antar elemenApple HIG
WCAG (Accessibility)44×44 CSS px48×48 CSS pxWCAG 2.2 Target Size
Best Practice Umum48×48 px (physical)7-10mm di layarResearch Fitts's Law

Prinsip Touch Interaction

💡 Fitts's Law

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
TapSentuhan sekali — aksi utama48dp minimum, beri feedback visual
Long PressTekan tahan — aksi sekunder/context menuBeri haptic feedback (getar)
SwipeGeser — navigasi atau deleteSwipe kiri/kanan untuk action, scroll untuk list
Pull to RefreshTarik ke bawah — refresh dataGunakan indicator yang jelas (spinner)
Pinch to ZoomJepit dua jari — zoom in/outUntuk gambar dan peta
Double TapTap dua kali — like/favoriteAnimasi 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:

Best Practice
# 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

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:

Diagram: Navigation Patterns
  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 Navigation3-5 section utama yang sering diaksesInstagram, WhatsApp, Spotify
Top Tab BarSub-kategori dalam satu sectionGoogle Play Store, Settings
Navigation DrawerBanyak section (>5), menu jarang diaksesGmail, Google Maps
Stack NavigationAlur linier (wizard, checkout)Formulir pendaftaran, onboarding
Search-FirstKonten sangat banyak, pencarian utamaYouTube, Tokopedia, Shopee
Hub & SpokeDashboard dengan beberapa toolsApple Watch, smart home app

Bottom Navigation Best Practices

⚠️ Aturan Bottom Navigation
  • 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 H128-34spBold (700)Judul halaman utama
Heading H222-28spSemi-bold (600)Sub-judul, section header
Heading H318-22spMedium (500)Judul card, item group
Body14-16spRegular (400)Teks utama konten
Caption12-14spRegular (400)Teks bantuan, metadata
Button14-16spMedium (500)Teks tombol — ALL CAPS atau Title Case
Minimum12sp-Jangan lebih kecil dari 12sp

Font Family yang Direkomendasikan

Platform Font Default Alternatif Bagus
Android (Material)RobotoGoogle 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
# 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
PrimaryWarna utama brand — CTA, link, aktif stateTombol utama, header, ikon aktif
SecondaryAksen — pendukung primaryTombol sekunder, chip, badge
SurfaceLatar belakang elemenCard, bottom sheet, dialog
BackgroundLatar belakang utama layarBackground halaman
Error/SemanticStatus dan feedback🔴 Error, 🟢 Success, 🟡 Warning, 🔵 Info
NeutralTeks, divider, ikon non-aktifTeks body, border, placeholder

Semantic Colors (Warna Status)

Color Palette
# ===== 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
📖 60-30-10 Rule

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
PerceivableInformasi harus bisa dipersepsi semua orangAlt text, caption video, kontras cukup
OperableUI bisa dioperasikan semua orangTouch target besar, navigasi keyboard/switch
UnderstandableKonten dan UI mudah dipahamiBahasa sederhana, error message jelas
RobustBisa diakses berbagai teknologi assistiveSemantic markup, content descriptions

Checklist Aksesibilitas Mobile

Accessibility Checklist
# ===== 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 BarHeader halaman dengan judul dan aksiCenter-aligned, Small, Medium, Large
Bottom NavigationNavigasi utama 3-5 itemIcon only, Icon + Label
FABTombol aksi utama yang mengambangRegular, Small, Large, Extended
CardKontainer untuk konten terkaitElevated, Filled, Outlined
ButtonAksi yang bisa diklikFilled, Outlined, Text, Elevated, Tonal
DialogPopup untuk konfirmasi/pilihanBasic, Full-screen
SnackbarFeedback singkat di bagian bawahDengan/ tanpa aksi
Navigation DrawerMenu samping untuk navigasiModal, Standard, Dismissible
Bottom SheetPanel dari bawah layarModal, Persistent
ChipFilter, input, atau choiceAssist, Filter, Input, Suggestion

Material You — Dynamic Color

Kotlin — Jetpack Compose + Material 3
// 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
ClarityTeks harus terbaca, ikon harus presisi, dan dekorasi harus mendukung fungsiGunakan San Francisco font, ikon SF Symbols
DeferenceUI harus mendukung konten, bukan mendominasi. Content is king.Translucency, whitespace, konten yang fokus
DepthHierarchy visual melalui layer dan translucencyBlur effect, card stacking, parallax scrolling

Perbedaan Material Design vs HIG

Aspek Material Design (Android) Human Interface (iOS)
Desain LanguageMaterial — elevation, ripple, bold colorClean — translucency, whitespace, subtle
Navigasi BackGesture dari tepi atau tombol back sistemBack button di top-left atau swipe dari kiri
Tab BarBottom Navigation (Material You)Tab Bar di bawah (iOS standard)
DialogMaterial AlertDialog (rounded corners)UIAlertController (blur background)
TypographyRoboto (Google Sans)San Francisco Pro (SF Pro)
Shadow & DepthElevation system (dp)Shadow + blur translucency
Haptic FeedbackVibration (HapticFeedback API)Taptic Engine (UIImpactFeedbackGenerator)
Dark ModeSurface color overlay (#121212)Elevated background system

Cross-Platform Design Tips

💡 Desain Cross-Platform

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:

Pertanyaan 1: Berapa ukuran touch target minimum yang direkomendasikan oleh Material Design?

a) 24dp × 24dp
b) 36dp × 36dp
c) 48dp × 48dp
d) 56dp × 56dp

Pertanyaan 2: Apa yang dimaksud dengan "Thumb-Friendly Zone"?

a) Area layar yang paling terang
b) Area layar yang mudah dijangkau oleh ibu jari
c) Ukuran minimum font di mobile
d) Warna tombol yang optimal

Pertanyaan 3: Berapa item maksimal yang direkomendasikan untuk Bottom Navigation?

a) 3 item
b) 7 item
c) 5 item
d) Tidak ada batasan

Pertanyaan 4: Apa prinsip utama Human Interface Guidelines (HIG) dari Apple?

a) Bold, Colorful, Playful
b) Clarity, Deference, Depth
c) Simple, Fast, Beautiful
d) Material, Elevation, Shadow

Pertanyaan 5: Kontras ratio minimum untuk teks normal menurut WCAG AA adalah?

a) 2.0:1
b) 3.0:1
c) 4.5:1
d) 7.0:1
🔍 Zoom
100%
🎨 Tema