This works but the value I get is multiplied times the screen density factor
(1.5 for hdpi, 2.0 for xhdpi, etc).
Myślę, że dobrze jest uzyskać wartość według rozdzielczości, ale jeśli nie chcesz tego zrobić, podaj to w px .......
Piksel niezależny od gęstości (dp)
Wirtualna jednostka pikseli, której należy używać podczas definiowania układu interfejsu użytkownika, w celu wyrażenia wymiarów lub położenia układu w sposób niezależny od gęstości. Piksel niezależny od gęstości odpowiada jednemu pikselowi fizycznemu na ekranie o rozdzielczości 160 dpi, który jest podstawową gęstością przyjętą przez system dla ekranu o „średniej” gęstości. W czasie wykonywania system w przejrzysty sposób obsługuje wszelkie skalowanie jednostek dp, w razie potrzeby. 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.
Podczas definiowania interfejsu użytkownika aplikacji należy zawsze używać jednostek dp, aby zapewnić prawidłowe wyświetlanie interfejsu użytkownika na ekranach o różnej gęstości.
Myślę, że warto zmienić wartość zgodnie z rozdzielczością, ale jeśli nie chcesz tego zrobić, podaj to w px .......
sprawdź ten link
zgodnie z tym
dp
Piksele niezależne od gęstości - jednostka abstrakcyjna oparta na fizycznej gęstości ekranu. Jednostki te odnoszą się do ekranu o rozdzielczości 160 dpi (punktów na cal), na którym 1dp jest z grubsza równy 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.
Stosunek dp-do piksela zmienia się wraz z gęstością ekranu, ale niekoniecznie w proporcji bezpośredniej. Korzystanie z jednostek dp (zamiast jednostek px) jest prostym rozwiązaniem, aby odpowiednio zmienić wymiary widoku w układzie dla różnych gęstości ekranu. Innymi słowy, zapewnia spójność rzeczywistych rozmiarów elementów interfejsu użytkownika na różnych urządzeniach.
px
Piksele - odpowiada rzeczywistym pikselom na ekranie. Ta jednostka miary nie jest zalecana, ponieważ rzeczywista reprezentacja może się różnić w zależności od urządzenia; każde urządzenie może mieć inną liczbę pikseli na cal i może mieć większą lub mniejszą liczbę pikseli dostępnych na ekranie.
getDimensionPixelSize(int id)
która dokładnie stwierdza, że zwraca w pikselach, więcgetDimension(int id)
powinien zwrócić w dp (jednostkach niezależnych od zależności), które byłyby gotowe do użycia, np. Z ViewsetPadding