Saya melihat ini mungkin pertanyaan noob, tapi itu benar-benar membingungkan saya.
Saya membaca dokumen dari Google Material Design, bersama dengan beberapa implementasinya di css. Spesifikasi ditulis dalam Android dp
, sedangkan kode css digunakan px
sebagai satuan panjang.
Yang membingungkan saya adalah bahwa implementasi css sering menggunakan nilai yang tepat dari spesifikasi, misalnya, bersulang harus :
Tinggi snackbar satu baris: tinggi 48 dp
Lebar minimum: 288 dp
Sudut bulat 2 dp
min-height: 48px;
min-width: 288px;
...
border-radius: 2px;
Dalam pemahaman saya saat ini, Android DP
umumnya ditampilkan pada ukuran satu piksel pada layar 160dpi, sedangkan CSS px
didefinisikan sebagai sudut visual. Jadi, apakah px
kebetulan sama dengan dp
ketika melihat dari jauh? Jika demikian, apakah itu pola umum untuk digunakan px
seperti dp
dalam css, atau apakah saya salah mengerti kode CSS?
Saya tidak tahu apa-apa tentang pengembangan Android sebelumnya, dan bukan desainer. Terima kasih atas bantuannya.
em/rem
s di mana-mana dan kemudian hanya skala ukuran font dasar untuk setiap resolusi.Jawaban:
Saya pikir yang diterima salah. Css px sebenarnya adalah Device Independent Pixel (dip), dan merupakan pola umum untuk menggunakan px sebagai dp dalam css.
sumber
Saya yakin jawaban lengkap untuk pertanyaan Anda dapat ditemukan di sini:
/programming/2025282/difference-between-px-dp-dip-and-sp-in-android
Untuk mengonversi dp ke px Anda harus memperhitungkan dimensi tampilan yang Anda tangani. Semakin besar DPI, semakin banyak piksel yang harus dijejalkan di area yang sama agar terlihat bagus dan untuk menghindari pikselasi :
ldpi: 1 dp = 0,75 px
mdpi: 1 dp = 1 px
hdpi: 1 dp = 1,5 px
xhdpi: 1 dp = 2 px
xxhdpi: 1 dp = 3 px
xxxhdpi: 1 dp = 4 px
Misalnya:
3x3 dp square dalam CSS atau Photoshop harus berupa:
2.25x2.25 px - ldpi
3x3 px - mdpi (Samsung ACE, Xperia X8)
6x6 px - xhdpi (Xperia S, Google Nexus 4)
9x9 px - xxhdpi (Samsung S4 - S5, HTC One)
12x12 px - xxxhdpi (resolusi ini akan digunakan pada perangkat generasi berikutnya)
Berdasarkan hal di atas, kalkulator Anda akan terlihat seperti ini, menggunakan pengganda 3x dp untuk layar XXHDPI:
Android secara otomatis menurunkan skala gambar jika menemukan bahwa resolusi perangkat yang digunakan lebih rendah, sehingga Anda aman untuk dikembangkan dengan mempertimbangkan XXHDPI, karena hal itu membahas sebagian besar perangkat canggih saat ini di pasar.
Berikut ini adalah konverter sederhana untuk melakukan pekerjaan untuk Anda: http://androidpixels.net/
sumber
W3C mengatakan :
Dan meskipun dikatakan:
Ia juga mengatakan:
Mempertimbangkan bahwa secara default perangkat layar dikonfigurasikan sebagai 96dpi, itu adalah asumsi terbaik tentang bagaimana browser menginterpretasikan piksel CSS:
Dan kita tahu itu di Android:
Begitu:
Dan menurut itu:
Yah, saya pikir itu benar sampai saya memeriksa ukuran Toast Google Polymer :
Jadi ini adalah konversi 1 ke 1, dan dari situ kita dapat menggunakan browser Android:
Dan 96 css-px per inci digunakan pada perangkat lain seperti desktop dan laptop.
Untuk menyimpulkan: piksel css tidak tergantung pada perangkat dpi dan pada perangkat Android 1 css-px sama dengan 1dp.
sumber
Tidak ada satu jawaban yang benar, sebenarnya ada dua:
Catatan: ide keseluruhan: di bagian bawah halaman: Penskalaan gambar dengan beberapa gambar untuk memvisualisasikan rasio untuk beberapa ambang batas resolusi layar (Gambar breakpoint)
Berikut adalah informasi yang lebih terperinci bagi mereka yang ingin menyelami topik lebih banyak, tetapi ini adalah penjelasan dan logika di baliknya, jawaban di atas adalah yang lengkap :
Masalahnya adalah "kerapatan piksel", menurut panduan resmi Material Design (Layout> Unit dan pengukuran), adalah:
Jadi pada dasarnya kerapatan piksel adalah nama baru untuk nilai ppi atau karena banyak orang tidak mengenali ini sebagai hal yang terpisah, nilai dpi.
Definisi 1dp sesuai dengan panduan yang sama:
Prinsip utama dari desain Material adalah untuk mempertahankan dimensi fisik yang konsisten di berbagai platform yang berbeda, yang mengangkat masalah resolusi desktop, ppi (/ dpi) dan piksel css dalam hal ini Anda harus tetap menghitung dp seperti halnya pada Android perangkat, dan itu tidak benar bahwa sebagian besar layar adalah 96ppi (ini adalah asumsi yang penting untuk CSS), sebagian besar dari mereka memiliki ppi sedikit lebih tinggi, dan jika Anda memperhitungkan tidak hanya desktop tradisional tetapi juga laptop biasa , atau tablet, atau "convertible" seperti Surface, ada kebutuhan untuk konversi: mereka biasanya berkisar 100-130ppi, yang mengatakan yang saya gunakan saat ini adalah 127ppi:
100% = 160ppi -> fisik 1 piksel lebar = 1dp -> persegi panjang 100x100px = 100x100dp
79% = 127ppi -> fisik 1 piksel lebar = ca. 0,8dp -> persegi panjang 100x100px = 80x80dp
Meskipun dp adalah unit murni dan baru hanya untuk Android, Anda harus membuat beberapa perhitungan untuk menyesuaikan tata letak MD yang semuanya datang dalam dp. Jika Anda ingin mengetahui lebih lanjut seberapa besar elemen spesifik dalam arti fisik, yang paling berguna untuk tujuan pertanyaan adalah nilai rentang ukuran sentuh Ideal di dalam pedoman Desain Bahan untuk perangkat tertentu ** Di bawah nilai dp ada yang fisik. ** Nilai dp berubah, tetapi fisiknya tetap sama.
Masalahnya, mengapa Anda perlu menghitung unit, dijelaskan lebih lanjut dalam panduan API Android (Konversi unit dp ke unit piksel) dan masih berlaku untuk elemen yang ditata dengan CSS:
Konversi Polimer yang disebutkan sebelumnya 1: 1 mungkin disebabkan oleh fakta bahwa kepadatan 96dpi, atau bahkan yang saya berikan adalah suatu tempat di kepadatan rendah atau bahkan (seperti dalam kasus 96dpi) kelompok, bahkan di bawahnya. Mempertimbangkan bahwa nilai dp bukan css diterima, lebih mudah untuk mengasumsikan bahwa rasio kerapatan (0,75- untuk rendah, 1,0 sedang, dan sebagainya) adalah salah satu yang harus digunakan untuk penyederhanaan dan beberapa ukuran. dukungan layar, yang ditunjukkan pada tabel perangkat untuk Desain Material yang disebutkan sebelumnya. Bahkan disebutkan sebagai salah satu praktik terbaik dalam kutipan di atas bab panduan API Android. Dan di situlah konversi Polymer 1: 1 mungkin baik, karena banyak perangkat memiliki rasio kepadatan di level 1.
Kembali ke dilema terakhir: css px, jika Anda memutuskan untuk menyelami nuansa halus berbagai perangkat. Jika Anda tidak ingin bertanya, tetap gunakan rasio Density dari tabel MD. Tetapi jika Anda seorang perfeksionis, inti dari piksel CSS dan hubungan dimensi fisik ini memiliki penjelasan yang sempurna (dan cukup sederhana) dalam Rekomendasi Kandidat W3C:
Definisi baru px ini (dengan mempertimbangkan dimensi fisik) mengisi celah antara piksel CSS dan dps dan memungkinkan kami memastikan bahwa dengan menggunakan perhitungan pengukuran sederhana yang disebut lingkungan keluaran, yang dalam hal ini adalah konsisten (dalam arti fisik ) Tata letak MD , tetap sama di berbagai perangkat dan platform. Selain itu, baik Panduan W3C dan MD menggunakan gambar perangkat resolusi rendah dan tinggi untuk menggambarkan ide inti dari cakupan piksel / titik - diperlukan lebih banyak piksel perangkat (titik) untuk mencakup area 1px demi 1px pada perangkat resolusi tinggi daripada pada resolusi rendah, yang berarti bahwa permintaan CSS yang banyak digunakan untuk tampilan retina memang hal yang sama yang harus Anda sediakan (tetapi dengan lebih banyak ambang batas) untuk Desain Material dan semua perangkat seluler.
Kesimpulannya, baik menggunakan rasio MD Density yang merupakan praktik terbaik yang disarankan oleh Google , atau jika Anda terpaku pada ketepatan atau desain Anda harus benar-benar konsisten tentang ukuran fisik: gunakan konversi yang akurat menggunakan nilai ppi / dpi spesifik atau umum perangkat (yang cukup gila), apa yang Anda dapat dengan mudah menguji pada alat online resizer Google karena mereka menghormati ambang batas umum yang disarankan dalam MD Guide di tempat pertama dan aturan pembagian untuk rasio dan nama-nama jenis tampilan yang relevan (xlarge, sedang, dan sebagainya) ) diimplementasikan di dalamnya.
Jadi tetap dengan rasio MD dari tabel mengingat bahwa referensi dp ukuran piksel yang sama adalah untuk resolusi mdpi (160) dan Anda akan baik-baik saja.
sumber