This works but the value I get is multiplied times the screen density factor
(1.5 for hdpi, 2.0 for xhdpi, etc).
Tôi nghĩ rằng nó là tốt để có được giá trị theo độ phân giải nhưng nếu bạn không muốn làm điều này hãy cho điều này trong px .......
Pixel độc lập với mật độ (dp)
Một đơn vị pixel ảo mà bạn nên sử dụng khi xác định bố cục UI, để thể hiện kích thước hoặc vị trí bố cục theo cách độc lập với mật độ. Pixel độc lập với mật độ tương đương với một pixel vật lý trên màn hình 160 dpi, đây là mật độ cơ sở được hệ thống giả định cho màn hình mật độ "trung bình". Trong thời gian chạy, hệ thống xử lý một cách minh bạch bất kỳ tỷ lệ nào của các đơn vị dp, khi cần thiết,based on the actual density of the screen in use. The conversion of dp units to screen pixels is simple: px = dp * (dpi / 160). For example, on a 240 dpi screen, 1 dp equals 1.5 physical pixels.
Bạn phải luôn sử dụng các đơn vị dp khi xác định giao diện người dùng của ứng dụng, để đảm bảo hiển thị đúng giao diện người dùng của bạn trên màn hình với mật độ khác nhau.
Tôi nghĩ thật tốt khi thay đổi giá trị theo độ phân giải nhưng nếu bạn không muốn làm điều này thì hãy cho điều này trong px .......
tham khảo liên kết này
theo điều này
dp
Pixels độc lập với mật độ - Một đơn vị trừu tượng dựa trên mật độ vật lý của màn hình. Các đơn vị này có liên quan đến màn hình 160 dpi (số chấm trên mỗi inch), trên đó 1dp gần bằng 1px.When running on a higher density screen, the number of pixels used to draw 1dp is scaled up by a factor appropriate for the screen's dpi. Likewise, when on a lower density screen, the number of pixels used for 1dp is scaled down.
Tỷ lệ dp-pixel sẽ thay đổi theo mật độ màn hình, nhưng không nhất thiết phải theo tỷ lệ trực tiếp. Sử dụng các đơn vị dp (thay vì các đơn vị px) là một giải pháp đơn giản để làm cho kích thước chế độ xem trong bố cục của bạn thay đổi kích thước đúng cho các mật độ màn hình khác nhau. Nói cách khác, nó cung cấp tính nhất quán cho kích thước trong thế giới thực của các thành phần UI của bạn trên các thiết bị khác nhau.
px
Pixel - Tương ứng với các pixel thực tế trên màn hình. Đơn vị đo này không được khuyến nghị vì đại diện thực tế có thể khác nhau giữa các thiết bị; mỗi thiết bị có thể có số pixel trên mỗi inch khác nhau và có thể có nhiều hoặc ít hơn tổng số pixel có sẵn trên màn hình.
getDimensionPixelSize(int id)
xác định chính xác rằng nó trả về Pixel, vì vậygetDimension(int id)
nên trả về dp (đơn vị độc lập phụ thuộc), điều đó sẽ sẵn sàng để sử dụng, ví dụ như với ViewsetPadding