Czy setWidth (int pixels) używa niezależnego od urządzenia lub fizycznego piksela jako jednostki? Na przykład, czy setWidth (100) ustawia szerokość widoku na 100 spadków lub 100 pikseli?
Dzięki.
Czy setWidth (int pixels) używa niezależnego od urządzenia lub fizycznego piksela jako jednostki? Na przykład, czy setWidth (100) ustawia szerokość widoku na 100 spadków lub 100 pikseli?
Dzięki.
Używa pikseli, ale jestem pewien, że zastanawiasz się, jak zamiast tego użyć spadków. Odpowiedź jest dostępna TypedValue.applyDimension()
. Oto przykład, jak przekonwertować spadki na piksele w kodzie:
// Converts 14 dip into its equivalent px
Resources r = getResources();
int px = Math.round(TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, 14,r.getDisplayMetrics()));
Prawidłowym sposobem uzyskania stałej liczby DIPów w kodzie jest utworzenie pliku XML z zasobami zawierającego wartości dp, podobnie jak:
Następnie odwołaj się do zasobu w swoim kodzie w następujący sposób:
Zwrócona liczba zmiennoprzecinkowa zostanie odpowiednio przeskalowana w celu uwzględnienia gęstości pikseli urządzenia, dzięki czemu nie ma potrzeby replikowania metody konwersji w całej aplikacji.
źródło
Metoda setWidth (100), ustaw 100 px jako szerokość (nie w dp), więc możesz napotkać problemy o różnej szerokości na różnych telefonach z Androidem.Więc użyj pomiaru w dp zamiast w pikselach Użyj poniższego kodu, aby uzyskać pomiar w dp szerokości próbki = 300 pikseli, a wysokość = 400 pikseli.
źródło
Źródło (@Romain Guy)
źródło
Piksele oczywiście metoda prosi o piksele jako parametr.
źródło
Na podstawie powyższych odpowiedzi, które dla mnie działają dobrze, generuję kilka metod pomocniczych , po prostu dodaj je do twoich narzędzi, aby używać ich w całym projekcie.
źródło