1px bằng bao nhiêu mm
Màn hình hiện đại dù hình ảnh rất mịn mạng, nhưng thực chất được tạo ra từ hàng ngàn những điểm rất nhỏ, mỗi điểm nhỏ đó được gọi gọi là điểm ảnh pixel ký hiệu là px, chúng bố trí tạo ra một lưới các điểm ảnh. Show
Các pixel được trí từ trái qua phải là X, từ trên xuống dưới là trục Y (khoảng cách 2 pixel theo trục X và Y có thể bằng nhau, có thể khác nhau). Ví dụ một màn hình 320 x 480 (width x height) thì có 320 pixel theo trục X và 480 pixel theo trục Y. Khái niệm về kích thước màn hình Kích thước màn hình mà mọi người vẫn quen sử dụng đối với smartphone, laptop, Tivi đó là đơn vị inch (1 inch = 2.54 cm = 25.4 mm) (màn hình laptop 17 inch chẳng hạn). Đây là kích thước đo bằng đường chéotừ góc trên bên trái tới góc dưới bên phải màn hình. Nếu biết chiều rộng, chiều cao màn hình thì có thể tính toán ra kích thước màn hình theo khái niệm trên. Như ví dụ sau, màn hình kích thước 3.2 inch Mật độ điểm ảnh PPI và DPIPPI Pixels Per Inch - Mật độ điểm ảnh có nghĩa là số lượng pixel trên một Inch. Như vậy màn hình nào có mật độ điểm ảnh lớn sẽ cho ảnh sắc nét hơn, vì thế đây là thông số quan tâm khi mua một thiết bị mới. DPI Dots Per Inch - Mật điểm điểm trên một inch, khá giống với PPI, khái niệm này rất đầu tiên dùng trong kỹ thuật in, DPI là số điểm ảnh mà máy in ra trên một inch. Một cách tương đối thì PPI là mật độ điểm ảnh trên màn hình, DPI là mật độ điểm ảnh trên máy in. Để kích thước ảnh hiện thị một cách độc lập với PPI (kích thước ảnh giống nhau trên các màn hình có PPI khác nhau), khi vẽ ảnh, xây dựng tài nguyên Android có thể dùng tới đơn vị phái sinh từ DPI là . Đơn vị dp (Density Independent Pixel) được tính dựa theo màn hình gốc ban đầu làm chuẩn. Android phần chia ra các loại màn hình theo DPI
Các đơn vị xác định kích thước, khoảng cách màn hình trong lập trình Android / IOSCó hai nhóm đơn vị, thứ nhất là các đơn vị độc lập mật độ và các đơn vị phụ thuộc vào mật độ điểm ảnh trên màn hình.
Tỷ lệ tương đối giữa sp và dp có thể điều chỉnh lại Các đơn vị trên: px, in, mm, pt, dp, sp đều có thể dùng trong XML trình bày layout, dùng trong các values.xml ... Vì dụ trong XML trình bày layout Ví dụ trong: 16dp 14sp 100px 20pt0 16dp 14sp 100px 20pt Việc sự dụng đơn vị như thế nào do ý thích của bạn, tuy nhiên để đảm bảo độc lập về thiết bị thì nên dùng dp trong trình bày đơn vị liên quan đến layout, như kích thước, margin, padding, width, height ... Dùng sp cho cơ chữ. Sử dụng các đơn vị trong Android - Thông tin màn hình thiết bịSử dụng DisplayMetrics để biết thông tin hiện thị trên màn hình thiết bịDisplayMetrics (android.util.DisplayMetrics) là lớp chứa các hằng số, phương thức cho bạn biết thông tin về màn hình thiết bị, cấu hình hiện thị. Để có được một DisplayMetrics có thể làm như sau: Trong các Activity DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); Khi đã có Context DisplayMetrics metrics = context.getResources().getDisplayMetrics() DisplayMetrics cung cấp các thuộc tính 16dp 14sp 100px 20pt1Mật độ logic (tương quan DPI và PPI) 16dp 14sp 100px 20pt2chính là DPI 16dp 14sp 100px 20pt3, 16dp 14sp 100px 20pt4Lấy chiều cao, chiều rộng hiện thị theo px 16dp 14sp 100px 20pt5Tỷ lệ cho font chữ (đơn vị sp), scaledDensity thường là bằng với density, trừ khi người dùng điều chỉnh 16dp 14sp 100px 20pt6, 16dp 14sp 100px 20pt7Số pixel trong 1 inch chính xác theo chiều X (ngang), chiều Y Chuyển đổi giữa các đơn vịNhiều trường hợp bạn có nhu cầu chuyển đổi giá trị theo đơn vị này sang giá trị theo đơn vị khác trong lập trình Android Chuyển từ DP sang PX public static int convertDpToPixels(float dp, Context context) { int px = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, context.getResources().getDisplayMetrics()); return px; } Chuyển từ SP sang PX public static int convertSpToPixels(float sp, Context context) { int px = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, sp, context.getResources().getDisplayMetrics()); return px; } Từ px tính ra dp dp = (kích_thước_theo_pixel * 160) / density Ngoài ra bạn cũng có thể khai báo giá trị 1 đơn vị trong 16dp 14sp 100px 20pt0 rồi đọc giá trị đó, để biết 1 đơn vị mô tả có bao nhiêu pixel. Ví dụ trong 16dp 14sp 100px 20pt0 thêm các dòng: 1dp 1sp 1pt 1in 1mm int sizeInPixel = context.getResources().getDimensionPixelSize(R.dimen.one_unit_dp); Mật độ màn hình và tài nguyên trong dự án AdnroidMật độ màn hình 16dp 14sp 100px 20pt1 chính là tỷ tệ tượng quan giữa số point và pixel, để lấy được giá trị này trong Android có đoạn code sau: float density = context.getResources().getDisplayMetrics().density; if (density == 0.75) { //Màn hình LDPI } else if (density == 1) { //Màn hình MDPI } else if (density == 1.5) { //Màn hình HDPI } else if (density == 2) { //Màn hình XHDPI } else if (density == 3) { //Màn hình XXHDPI } else if (density == 4) { //Màn hình XXXHDPI } Chính từ giá trị mật độ này, khi xây dựng các tài nguyên như hình ảnh, các ảnh có lưu trong thư mục trùng với tên màn hình tương ứng, khi ứng dụng chạy nó sẽ tìm tới ldpi mdpi hdpi xhdpi xxhdpi xxxhdpi nodpi tvdpi tài nguyên phù hợp với màn hình |