px — piksel fisik, elemen gambar terkecil pada layar perangkat. Dalam pengembangan mobile, px digunakan sebagai unit dasar resolusi layar dan kerapatan piksel (PPI), tetapi praktis tidak digunakan untuk tata letak antarmuka — sebagai gantinya digunakan unit logis pt, dp, dan sp. Artikel ini menjelaskan perbedaan px dari unit logis, bagaimana resolusi dan PPI saling terkait, dan mengapa penggunaan langsung px dalam kode adalah antipola.
Poin Penting
px (pixel, picture element) — elemen terkecil yang dapat dialamatkan dari gambar raster atau layar. Setiap piksel menyimpan informasi warna dalam model RGB (merah, hijau, biru) dengan kedalaman warna 8 hingga 10 bit per saluran. Layar perangkat mobile modern mengandung jutaan piksel: iPhone 15 Pro — 3 juta, iPad Pro 12.9" — 5.6 juta piksel.
Ukuran fisik piksel tergantung pada kerapatan layar (PPI). Pada perangkat dengan 326 PPI (iPhone 11) satu piksel berukuran sekitar 0.078 mm. Pada layar dengan 460 PPI (iPhone 15 Pro) — 0.055 mm. Semakin kecil ukuran fisik piksel, semakin tinggi ketajaman gambar. Kerapatan piksel secara langsung memengaruhi performa rendering: lebih banyak piksel = lebih banyak kerja untuk GPU.
Menurut data Apple, resolusi layar iPhone 15 Pro adalah 1179 × 2556 px pada kerapatan 460 PPI. Sebagai perbandingan, iPhone SE (3rd gen) — 750 × 1334 px pada 326 PPI. Perbedaan jumlah total piksel hampir 3 kali lipat, yang menjelaskan persyaratan GPU yang lebih tinggi pada model Pro.
Resolusi layar — jumlah piksel fisik secara horizontal dan vertikal. Ditulis dalam format lebar × tinggi, misalnya 1179 × 2556 px. Resolusi adalah karakteristik fundamental layar yang tidak dapat diubah secara programatis — ditetapkan pada tingkat perangkat keras dan matriks.
| Perangkat | Resolusi (px) | PPI | Rasio Aspek |
|---|---|---|---|
| iPhone SE (3rd gen) | 750 × 1334 | 326 | 16:9 |
| iPhone 14 | 1170 × 2532 | 460 | 19.5:9 |
| iPhone 15 Pro Max | 1290 × 2796 | 460 | 19.5:9 |
| Samsung Galaxy S24 Ultra | 1440 × 3120 | 505 | 19.5:9 |
| Google Pixel 8 Pro | 1344 × 2992 | 490 | 20:9 |
| iPad Pro 12.9" | 2048 × 2732 | 264 | 4:3 |
Resolusi dalam piksel tidak boleh disamakan dengan ukuran logis layar (dalam pt untuk iOS atau dp untuk Android). Misalnya, iPhone 14 memiliki ukuran logis 390 × 844 pt, tetapi resolusi fisik 1170 × 2532 px — tepat 3 kali lebih besar, karena faktor skala sama dengan 3.
PPI (pixels per inch) — jumlah piksel per inci layar. Dihitung dengan rumus: PPI = √(lebar² + tinggi²) / diagonal. Semakin tinggi PPI, semakin halus piksel individual dan semakin mulus gambar terlihat. Apple menganggap layar dengan PPI di atas 300 pada jarak pandang tipikal sebagai layar Retina.
Kategori perangkat yang berbeda memiliki kerapatan yang berbeda: jam tangan Apple Watch — 326 PPI, iPhone — 326–460 PPI, iPad — 264 PPI, MacBook Pro — 254–264 PPI. Perangkat Android mengklasifikasikan kerapatan melalui Density Buckets: mdpi (160 dpi), hdpi (240), xhdpi (320), xxhdpi (480), xxxhdpi (640). Ember ini menentukan sumber daya mana (gambar, dimens) yang akan dimuat untuk perangkat tersebut.
Pengaruh PPI pada pengembangan: semakin tinggi kerapatan, semakin banyak memori yang diperlukan untuk menyimpan tekstur dan gambar. Satu piksel pada layar dengan 500 PPI memerlukan memori GPU 2.5 kali lebih banyak daripada layar dengan 320 PPI pada ukuran logis elemen yang sama. Optimalisasi aset untuk ember kerapatan tertentu adalah praktik standar dalam pengembangan Android.
Piksel fisik (px) berbeda dari unit logis (pt, dp, sp) karena mereka terikat pada resolusi perangkat keras dan tidak berskala. Unit logis, sebaliknya, mengabstraksi pengembang dari layar tertentu, memungkinkan nilai 100 pt yang sama ditampilkan dengan ukuran fisik yang identik pada perangkat yang berbeda.
| Unit | Platform | Tergantung PPI | Berskala | Untuk apa |
|---|---|---|---|---|
| px | Semua | Ya (piksel fisik) | Tidak | Gambar, buffer, Metal |
| pt | iOS/macOS | Tidak (titik logis) | scale factor | Layout, UIKit, SwiftUI |
| dp | Android | Tidak (independen kerapatan) | density bucket | Layout, ukuran elemen |
| sp | Android | Tidak (independen skala) | density + font scale | Teks (textSize) |
Rumus konversi: untuk iOS — px = pt × scale (di mana scale = 1, 2, atau 3). Untuk Android — px = dp × (dpi / 160). Penggunaan langsung px dalam kode berarti antarmuka akan terlihat berbeda pada perangkat dengan kerapatan berbeda: pada layar dengan PPI tinggi elemen akan terlalu kecil, dan pada PPI rendah — terlalu besar.
Penggunaan px dalam kode sumber aplikasi mobile — antipola yang menyebabkan tampilan antarmuka yang tidak benar pada perangkat dengan kerapatan piksel berbeda. Framework modern (UIKit, SwiftUI, Jetpack Compose, XML Layouts) melarang atau tidak merekomendasikan penentuan ukuran dalam piksel.
Satu-satunya penggunaan px yang sah dalam kode — bekerja dengan raster: memuat Bitmap, membuat Canvas untuk rendering gambar, bekerja dengan Metal atau OpenGL. Dalam kasus ini px — piksel fisik dari buffer target dan harus diperhitungkan untuk rendering yang benar. Dalam semua kasus lainnya, unit logis digunakan.
Gambar dan ikon disimpan dalam piksel, tetapi untuk setiap tipe layar disediakan versi yang berbeda. iOS menggunakan sufiks @1x, @2x, @3x di Assets.xcassets. Android menggunakan folder drawable-mdpi (1×), drawable-hdpi (1.5×), drawable-xhdpi (2×), drawable-xxhdpi (3×), drawable-xxxhdpi (4×). Sistem secara otomatis memilih file yang tepat berdasarkan kerapatan layar.
| iOS scale | Android bucket | Faktor | Contoh (48 pt/dp) |
|---|---|---|---|
| @1x | mdpi (160 dpi) | 1× | 48 × 48 px |
| @2x | xhdpi (320 dpi) | 2× | 96 × 96 px |
| @3x | xxhdpi (480 dpi) | 3× | 144 × 144 px |
| — | xxxhdpi (640 dpi) | 4× | 192 × 192 px |
Aturan penyediaan aset: buat gambar dalam format vektor (PDF, SVG) dan ekspor ke salinan raster dengan ukuran yang diperlukan. Aset vektor berskala tanpa kehilangan kualitas dan memakan lebih sedikit ruang di repositori. Di Android, sumber daya vektor dapat digunakan langsung melalui VectorDrawable, yang menghilangkan kebutuhan akan banyak salinan raster.
Pertanyaan yang Sering Diajukan
px — piksel fisik layar. dp (density-independent pixel) — unit logis Android, sama dengan 1 px pada layar dengan kerapatan 160 dpi. Pada kerapatan yang berbeda, dp secara otomatis dikonversi ke jumlah px yang berbeda, mempertahankan ukuran fisik elemen.
Karena px tidak memperhitungkan kerapatan layar. Elemen berukuran 100 px akan terlihat berbeda pada perangkat dengan PPI berbeda: pada layar 326 PPI akan lebih besar daripada di 460 PPI. Unit logis (dp, pt, sp) memecahkan masalah ini secara otomatis.
PPI (pixels per inch) — jumlah piksel per inci layar. Dihitung dengan rumus: PPI = √(w² + h²) / d, di mana w dan h — resolusi dalam px, d — diagonal dalam inci. Semakin tinggi PPI, semakin tajam gambar. Layar Retina Apple dimulai dari 300 PPI.
px dibenarkan saat bekerja dengan buffer raster: membuat Bitmap, rendering di Canvas, memprogram shader Metal/OpenGL, memproses gambar kamera. Dalam layout dan tipografi px tidak digunakan — pt (iOS), dp dan sp (Android) yang diterapkan.
Di iOS: UIScreen.main.nativeBounds mengembalikan ukuran dalam px. Di Android: DisplayMetrics.widthPixels dan heightPixels dari context.resources.displayMetrics. Di SwiftUI: GeometryReader mengembalikan ukuran dalam pt, untuk px perlu dikalikan dengan displayScale.
Kesimpulan
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.
Baca juga