Kết quả 1 đến 3 của 3
  1. #1
    Ngày tham gia
    Jun 2014
    Bài viết
    0

    PHÂN BIỆT ĐƠN VỊ ĐO TRONG ANDROID: PX, DP, DIP, SP AND DPI

    1. Pixel – px hay còn gọi điểm ảnh:



    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.

    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 x 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 tuỳ 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 để do 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 <span style="font-family: 'inherit'">1dp = 1/160 = 0.00625 inch </span>



    1 dp có thể chứa 1 hay nhiều pixel.



    Như ví dụ hình trên 10 dp ở màn hình độ phân giải thấp 1dp tương đương 1 pixel. Ở độ phân giải trung bình thì 1dp tương đương 4 pixels …

    Ví dụ: hàm dưới đây quy đổi dp ra px và ngược lại:



    <span style="font-size: 11px"><span style="font-size: 11px"><span style="font-size: 11px"><span style="font-size: 11px"><span style="font-size: 11px">
    <span style="font-size: 11px"><span style="font-family: 'Consolas'">01
    <span style="font-family: 'Consolas'">//Sample code</span></span></span></span>

    <span style="font-size: 11px"><span style="font-size: 11px">
    <span style="font-size: 11px"><span style="font-family: 'Consolas'">02
    public <span style="font-family: 'Consolas'">static float convertDpToPixels(float dp,Context context){</span></span></span></span></span>

    <span style="font-size: 11px"><span style="font-size: 11px">
    <span style="font-size: 11px"><span style="font-family: 'Consolas'">03
    Resources resources = context.getResources();</span></span></span></span>

    <span style="font-size: 11px"><span style="font-size: 11px">
    <span style="font-size: 11px"><span style="font-family: 'Consolas'">04
    DisplayMetrics metrics = resources.getDisplayMetrics();</span></span></span></span>

    <span style="font-size: 11px"><span style="font-size: 11px">
    <span style="font-size: 11px"><span style="font-family: 'Consolas'">05
    float <span style="font-family: 'Consolas'">px = dp * (metrics.densityDpi/160f);</span></span></span></span></span>

    <span style="font-size: 11px"><span style="font-size: 11px">
    <span style="font-size: 11px"><span style="font-family: 'Consolas'">06
    return <span style="font-family: 'Consolas'">px;</span></span></span></span></span>

    <span style="font-size: 11px"><span style="font-size: 11px">
    <span style="font-size: 11px"><span style="font-family: 'Consolas'">07
    }</span></span></span></span>

    <span style="font-size: 11px"><span style="font-size: 11px">
    <span style="font-size: 11px"><span style="font-family: 'Consolas'">08
    public <span style="font-family: 'Consolas'">static float convertPixelsToDp(float px,Context context){</span></span></span></span></span>

    <span style="font-size: 11px"><span style="font-size: 11px">
    <span style="font-size: 11px"><span style="font-family: 'Consolas'">09
    Resources resources = context.getResources();</span></span></span></span>

    <span style="font-size: 11px"><span style="font-size: 11px">
    <span style="font-size: 11px"><span style="font-family: 'Consolas'">10
    DisplayMetrics metrics = resources.getDisplayMetrics();</span></span></span></span>

    <span style="font-size: 11px"><span style="font-size: 11px">
    <span style="font-size: 11px"><span style="font-family: 'Consolas'">11
    float <span style="font-family: 'Consolas'">dp = px / (metrics.densityDpi / 160f);</span></span></span></span></span>

    <span style="font-size: 11px"><span style="font-size: 11px">
    <span style="font-size: 11px"><span style="font-family: 'Consolas'">12
    return <span style="font-family: 'Consolas'">dp;</span></span></span></span></span>

    <span style="font-size: 11px"><span style="font-size: 11px">
    <span style="font-size: 11px"><span style="font-family: 'Consolas'">13
    </span></span></span></span>

    <span style="font-size: 11px"><span style="font-size: 11px">
    <span style="font-size: 11px"><span style="font-family: 'Consolas'">14
    }</span></span></span></span></span></span></span></span>



    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: <span style="font-family: 'inherit'"><span style="font-family: 'inherit'">ldpi (120 dpi), normal: mdpi (160 dpi), large: hdpi (240 dpi), x-large: xhdpi (320 dpi) . 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:</span></span>

    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.

    iPhone3 320x480 163 ppi iPhone4 640×960 326 ppi iPhone4S 640×960 326 ppi iPhone5 640×1136 326 ppi iPad 1024x768 132 ppi iPad2 1024x768 132 ppi iPad (3gen) 2048x1536 264 ppi iPad (4gen) 2048x1536 264 ppi iPad mini 1024x768 163 ppi

    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:

    1 pt = 1/72 inch, trong khi 1 dp = 1/160 inch

    pt thường được dùng trong lập trình iOS.

    5. SP - Scale-independent Pixels:

    Cũng tương tự như dp, nhưng sp thường được dùng cho font size của văn bản.



    Sau đây là ví dụ ở màn hình normal screen mdpi (160dpi) cho các đơn vị đo dp, sp, px, pt, inch



    Nguồn Androidvn.org

  2. #2
    nice guide, mate [IMG]styles/default/xenforo/clear.png[/IMG]

  3. #3
    Ngày tham gia
    Jun 2014
    Bài viết
    0
    vậy để tính dip của màn hình hiện tại thì như thế nào ạ? e dùng lu6200, độ phân giải 1280x720 và dpi là 320

Các Chủ đề tương tự

  1. LG G2 sẽ lên Android 4.4 trong tháng 11 hoặc 12?
    Bởi levanminh440 trong diễn đàn Mua Bán Điện Thoại
    Trả lời: 261
    Bài viết cuối: 03-03-2014, 04:15 AM
  2. HTC One và DROID DNA sẽ nhận bản cập nhật Android 4.3 trong tháng sau
    Bởi thethaotamchinh trong diễn đàn Mua Bán Điện Thoại
    Trả lời: 112
    Bài viết cuối: 02-22-2014, 09:30 PM
  3. Quảng cáo trong ứng dụng làm Android hao pin hơn 70%
    Bởi cuacuong8 trong diễn đàn Mua Bán Điện Thoại
    Trả lời: 174
    Bài viết cuối: 09-14-2013, 04:16 AM
  4. Trả lời: 213
    Bài viết cuối: 07-22-2013, 03:02 PM
  5. đăng bài trong phần mềm android không được
    Bởi mrhao91 trong diễn đàn Mua Bán Điện Thoại
    Trả lời: 0
    Bài viết cuối: 01-01-1970, 08:00 AM

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •