Pixel, px hay có khi gọi là pel (xuất phát từ “picture element”), chúng ta hay gọi là điểm ảnh, có dạng hình vuông. Show
Một hình ảnh bitmap mà bạn thấy trên màn hình là ma trận hai chiều (2D) của các pixel tạo nên (hay ma trận của các hình vuông nhỏ). Mỗi pixel chiếm 1 vị trí trong ma trận và chứa 1 phần của hình ảnh hiển thị. Mỗi pixel chứa 1 màu duy nhất được phối hợp từ 3 màu cơ bản Red, Green, Blue. Pixel thường được dùng để nói về độ phân giải (resolution) của thiết bị. Ví dụ: Samsung Galaxy S3 có màn hình độ phân giải 1280×720 (Height x Width). Điều này có nghĩa là chiều cao của màn hình Galaxy S3 là 1280 pixels, còn chiều rộng là 720 pixels. Thiết bị có độ phân giải càng cao thì màn hình càng có nhiều pixels. Tuy nhiên điều này chưa nói lên được là màn hình sẽ hiển thị ảnh min, đẹp hay không. Điều này tùy thuộc vào diện tích của màn hình, vì vậy pixel không dùng làm đơn vị đo lường kích thước của màn hình thiết bị, nhưng lại được dùng để đo kích thước của ảnh. 2. dp, hay dip hay Density-independent Pixels, có khi được gọi là Device-independent Pixels:Đây là một đơn vị đo chiều dài vật lý cũng giống như inch, cm, mm… mà Google thường áp dụng để đo kích thước màn hình của thiết bị. (Bên iOS dùng pt hay point có khái niệm tương tự với dp – xem mục 4 bên dưới) 160 dp = 1 inch – điều này có nghĩa 1dp = 1/160 = 0.00625 inch 1 dp có thể chứa 1 hay nhiều pixel. 3. DPI – Dots per inch hay PPI – Pixels per inch:Lưu ý dp hay dip không được nhầm lẫn với dpi (dots per inch). Dots per inch là số điểm ảnh (pixels) trên 1 inch của màn hình thiết bị, con số này càng lớn thì màn hình thiết bị hiển thị hình ảnh càng mịn và đẹp. Dựa vào dpi người ta chia làm loại màn hình như sau: – small: ldpi (120dpi) – normal: mdpi (160dpi) – large: hdpi (240dpi) – x-large: xhdpi (320dpi). Với mỗi loại này thì 1 dp tương ứng với số lượng pixels khác nhau, được tính theo công thức: px = dp * (dpi / 160) Ví dụ với thiết bị có dpi là 320 thì với 10 dp ta có: 10 * (320/160) = 20 px, 1 dp tương đương 2 px. Mã (text): 4. PT – Point:PT – viết tắt của Point, khái niệm pt tương tự như dp là một đơn vị đo kích thước thực, nhưng khác với dp: 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. 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 |