Corner Radius — apa itu, radius pembulatan di aplikasi mobile

Penulis: IT Sectr Diterbitkan: 2026-02-28 Waktu membaca: 9 mnt

Corner radius — parameter pembulatan sudut elemen UI, diukur dalam piksel logis (pt di iOS, dp di Android) yang menentukan radius lingkaran yang berada di sudut persegi panjang. Pemilihan corner radius yang tepat mempengaruhi persepsi antarmuka: pembulatan besar menciptakan kesan lembut dan ramah, yang kecil — tegas dan formal. Menurut Material Design Guidelines (Google, 2026), radius yang direkomendasikan untuk kartu adalah 8–16 dp, untuk tombol — 4–8 dp. Baca lebih lanjut tentang mengelola tampilan elemen di artikel tentang bayangan di UI.

Poin utama

  • Corner radius — radius pembulatan sudut, diukur dalam pt (iOS) atau dp (Android).
  • Material Design merekomendasikan 8–16 dp untuk kartu, 4–8 dp untuk tombol, 16–28 dp untuk dialog.
  • Di iOS cornerRadius diatur melalui CALayer.cornerRadius atau ClipRRect di SwiftUI.
  • Di Android pembulatan dilakukan melalui shape (drawable XML), MaterialShapeDrawable atau ClipRRect di Compose.
  • Pembulatan yang terlalu besar mengurangi keterbacaan teks dan dapat menyembunyikan konten di tepi.

Apa itu corner radius?

Corner radius — nilai numerik yang menentukan tingkat pembulatan sudut elemen persegi panjang. Semakin tinggi nilainya, semakin bulat sudutnya. Pada nilai 0 sudut tetap siku-siku (90°), pada nilai setengah dari sisi terpendek, elemen berubah menjadi lingkaran (untuk persegi) atau persegi panjang membulat dengan sisi lurus (kapsul).

Dalam desain mobile, corner radius digunakan untuk: kartu dan ubin, tombol, bidang input, jendela modal, gambar dan avatar, indikator kemajuan, chip dan lencana. Setiap jenis elemen memiliki rentang yang direkomendasikan pembulatan, berdasarkan pedoman Material Design dan Human Interface Guidelines.

Menurut Material Design 3 (Google, 2026), pembulatan sudut diklasifikasikan menjadi tiga tingkatan: small (4 dp) untuk tombol dan bidang input, medium (8–12 dp) untuk kartu dan lembaran, large (16–28 dp) untuk dialog dan bottom sheet. HIG Apple (2025) merekomendasikan corner radius seragam 10–12 pt untuk elemen sistem (UIButton, UITextField) dan 20+ pt untuk presentasi modal.

Corner radius di iOS: CALayer dan SwiftUI

Di iOS pembulatan sudut dilakukan melalui properti cornerRadius di CALayer. Di UIKit, setiap UIView memiliki layer yang dapat diatur cornerRadius-nya. Untuk pembulatan yang lebih kompleks (radius berbeda untuk sudut berbeda) digunakan maskedCorners dan CACornerMask dalam kombinasi dengan UIBezierPath.

swift
// UIKit: pembulatan melalui CALayer
import UIKit

let cardView = UIView()
cardView.backgroundColor = .systemBackground
cardView.layer.cornerRadius = 12
cardView.layer.maskedCorners = [
    .layerMinXMinYCorner,
    .layerMaxXMinYCorner
]

Di SwiftUI pembulatan diatur melalui modifier cornerRadius() atau melalui ClipShape dengan RoundedRectangle. SwiftUI juga mendukung pembulatan sudut individual melalui UIRectCorner dalam kombinasi dengan clipped() dan overlay().

swift
// SwiftUI: pembulatan melalui RoundedRectangle
import SwiftUI

VStack {
    Text("Radius sudut 16")
        .padding()
        .background(
            RoundedRectangle(cornerRadius: 16)
                .fill(Color.blue)
        )
}

// Pembulatan sudut individual
RoundedRectangle(
    cornerSize: CGSize(width: 16, height: 16),
    style: .continuous
)

Continuous corner radius — gaya pembulatan yang digunakan Apple di iOS sejak rilis iOS 7. Berbeda dengan radius klasik (circular), continuous radius menciptakan pembulatan yang lebih halus dengan menggunakan kurva Bezier orde ketiga sebagai ganti busur lingkaran. SwiftUI mendukung gaya ini melalui parameter style: .continuous di RoundedRectangle. Apple merekomendasikan continuous corner radius untuk semua elemen sistem karena lebih alami secara visual.

Corner radius di Android: shape dan Compose

Di Android pembulatan sudut secara tradisional dilakukan melalui sumber daya XML shape di folder res/drawable. Shape mendefinisikan bentuk latar belakang dengan parameter cornerRadius dan solid. Untuk sudut yang berbeda digunakan <, bottom, top dan <right. Di Material Design 3 ditambahkan MaterialShapeDrawable dengan dukungan untuk tema dan bentuk dinamis.

xml
<!-- res/drawable/bg_card.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="@color/white" />
    <corners android:radius="12dp" />
</shape>

Di Jetpack Compose pembulatan diatur melalui parameter shape di Modifier. Compose menyediakan RoundedCornerShape dengan dukungan untuk radius berbeda untuk setiap sudut dan gaya (CircularShape atau CutCornerShape). Compose juga mendukung continuous corner radius melalui RoundedCornerShape dalam kombinasi dengan kontur grafis.

kotlin
// Jetpack Compose: pembulatan melalui RoundedCornerShape
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp

Card(
    shape = RoundedCornerShape(
        topStart = 16.dp,
        topEnd = 16.dp,
        bottomStart = 4.dp,
        bottomEnd = 4.dp
    ),
    elevation = CardDefaults.cardElevation(defaultElevation = 4.dp)
) {
    Text(text = "Kartu dengan pembulatan kustom")
}

MaterialShapeDrawable di Android View System memungkinkan perubahan dinamis corner radius tanpa membuat ulang drawable. Gunakan ShapeAppearanceModel untuk konfigurasi yang tepat: atur cornerFamily (rounded atau cut) dan cornerSize untuk setiap sudut secara terpisah.

Cara memilih corner radius yang tepat

Pemilihan corner radius tergantung pada jenis elemen, konteks penggunaan, dan platform. Tidak ada aturan universal, tetapi Material Design dan HIG Apple memberikan rekomendasi yang jelas untuk komponen standar. Prinsip dasar: pembulatan harus terlihat, tetapi tidak mengganggu konten.

Jenis elemenRadius yang direkomendasikanPlatformCatatan
Tombol4–8 dp / 8 ptiOS, AndroidSemakin besar tombol, semakin besar radius
Kartu8–16 dp / 10–12 ptiOS, AndroidMaterial Design: default 12 dp
Bidang input4–8 dp / 8 ptiOS, AndroidPembulatan terlalu besar terlihat tidak alami
Jendela modal16–28 dp / 20+ ptiOS, AndroidiOS 18: default 24 pt
Avatar50% dari ukuraniOS, AndroidUntuk avatar bulat radius = setengah sisi
Chip / Lencana16–20 dp / 14 ptAndroidBentuk kapsul pada pembulatan besar

Aturan kontras: elemen dengan corner radius berbeda dalam satu antarmuka harus berbeda setidaknya 4 dp agar perbedaan visual terlihat. Jangan gunakan 3 tingkat pembulatan pada satu layar — ini menciptakan kebisingan visual. Material Design 3 merekomendasikan penggunaan tidak lebih dari dua tingkat pembulatan per layar: satu untuk wadah (kartu, dialog) dan satu untuk elemen interaktif (tombol, bidang).

Corner radius di Flutter

Di Flutter pembulatan sudut dilakukan melalui kelas BorderRadius, yang menerima nilai Radius.circular() atau Radius.elliptical(). Flutter mendukung pembulatan individual melalui BorderRadius.only() dan BorderRadius.horizontal()/vertical(). Widget ClipRRect memotong elemen anak sesuai dengan BorderRadius yang diberikan.

dart
// Flutter: pembulatan melalui ClipRRect dan Container
import 'package:flutter/material.dart';

Container(
    decoration: BoxDecoration(
        color: Colors.white,
        borderRadius: BorderRadius.only(
            topLeft: Radius.circular(16.0),
            topRight: Radius.circular(16.0),
            bottomLeft: Radius.circular(4.0),
            bottomRight: Radius.circular(4.0),
        ),
    ),
    child: Text('Pembulatan sudut kustom'),
)

// ClipRRect dengan Image
ClipRRect(
    borderRadius: BorderRadius.circular(12.0),
    child: Image.network(
        'https://example.com/image.jpg',
        fit: BoxFit.cover,
    ),
)

ClipRRect di Flutter digunakan ketika perlu memotong gambar atau widget kompleks di sepanjang batas yang membulat. Untuk wadah latar belakang sederhana, BoxDecoration dengan borderRadius sudah cukup — ini lebih efisien karena tidak membuat lapisan pemotongan terpisah. Material Flutter 3.22+ mendukung continuous corner radius melalui ContinuousRectangleBorder.

Pertanyaan yang sering diajukan

Apa perbedaan corner radius di dp dan pt?

dp (density-independent pixels) di Android dan pt (points) di iOS — adalah unit logis yang sesuai dengan ukuran fisik di layar terlepas dari kerapatan piksel. 1 dp ≈ 1 pt ≈ 1/160 inci. Nilai numerik corner radius dalam dp dan pt dapat digunakan secara bergantian saat memindahkan desain antar platform.

Bagaimana cara membulatkan hanya sudut atas?

Di iOS gunakan maskedCorners dengan CACornerMask: layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner]. Di Android XML — . Di Jetpack Compose — RoundedCornerShape(topStart = 12.dp, topEnd = 12.dp). Di Flutter — BorderRadius.only(topLeft: Radius.circular(12), topRight: Radius.circular(12)).

Apa itu continuous corner radius?

Continuous corner radius — gaya pembulatan di mana sudut dibentuk bukan oleh busur lingkaran, tetapi oleh kurva Bezier orde ketiga. Apple menggunakan gaya ini sejak iOS 7 untuk semua elemen sistem. Secara visual, pembulatan continuous terlihat lebih halus dan alami dibandingkan dengan gaya circular klasik.

Corner radius apa yang harus digunakan untuk keyboard kustom?

Disarankan 10–12 pt di iOS (seperti keyboard sistem) dan 8–12 dp di Android. Tombol di dalam keyboard dapat memiliki radius yang lebih kecil (4–6 dp) atau tanpa pembulatan. Untuk meningkatkan area sentuh, gunakan padding 4–8 dp antara batas membulat dan tepi tombol.

Mengapa pembulatan sudut tidak diterapkan ke UITableViewCell?

UITableViewCell tidak mewarisi cornerRadius dari contentView secara otomatis, karena latar belakang sel digambar di backgroundView. Untuk membulatkan sel, atur cornerRadius untuk contentView.layer dan backgroundView.layer secara bersamaan. Di SwiftUI gunakan .listRowBackground() dengan RoundedRectangle.

Ringkasan

  • Corner radius — radius pembulatan sudut elemen UI, diukur dalam dp (Android) atau pt (iOS).
  • Material Design merekomendasikan 8–16 dp untuk kartu, 4–8 dp untuk tombol, 16–28 dp untuk dialog.
  • Di iOS pembulatan diatur melalui CALayer.cornerRadius (UIKit) atau RoundedRectangle (SwiftUI).
  • Di Android — melalui shape XML (View System) atau RoundedCornerShape (Jetpack Compose).
  • Continuous corner radius — pembulatan lebih halus melalui kurva Bezier, digunakan di iOS sejak iOS 7.
  • Flutter menggunakan BorderRadius dan ClipRRect untuk membulatkan wadah dan memotong gambar.
  • Jangan gunakan lebih dari dua tingkat pembulatan pada satu layar untuk menjaga integritas visual.

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek

Baca juga