2012-04-10 33 views

Trả lời

7

Hy vọng điều này sẽ rất hữu ích

Resources r = getResources(); 
float dp = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX, 69, r.getDisplayMetrics()); 
+2

Không nó được đưa ra cùng value.I có nghĩa là giá trị của điểm ảnh như nhúng – user1195614

10

Chỉ cần chia giá trị của mình bằng pixel bởi DisplayMetrics.density.

+0

nào là đúng: để phân chia hoặc nhân giống như trong ví dụ của @ Khushboo? –

+1

Chia. Công thức được hiển thị bởi @Khushboo chuyển đổi dp thành px. Trên màn hình xhdpi, DisplayMetrics.density == 2.0f. Vì 1 dp == 1 px trên màn hình mdpi và 1 dp == 2 px trên màn hình xhdpi, bạn cần chia để chuyển dp thành px, không phải cách khác xung quanh. –

7

Bạn có thể thử này:

public int convertDiptoPx(int pixel){ 

    float scale = getResources().getDisplayMetrics().density; 
    int dips=(int) ((pixel * scale) + 0.5f); 
    logMessage("Px=" +pixel+" DipValue="+dips); 
    return dips; 
} 

ngồi biên tập:

public int convertPxtoDip(int pixel){ 
    float scale = getResources().getDisplayMetrics().density; 
    int dips=(int) ((pixel/scale) + 0.5f); 
    return dips; 
} 
+0

Dường như điều này là sai, theo @ Romain-Guy –

+0

Tôi đã chỉnh sửa mã ngay bây giờ. Sai lầm, tôi đăng câu trả lời ngược lại. – Khushboo

+0

Bạn có thể kiểm tra chuyển đổi tại trang web này: - http://labs.skinkers.com/content/android_dp_px_calculator/. – Khushboo

Các vấn đề liên quan