Czy setWidth (int pixels) używa dip lub px?
Czy setWidth(int pixels) używa piksela niezależnego od urządzenia lub piksela fizycznego jako jednostki? Na przykład, czy setWidth(100) ustawia szerokość widoku a na 100 dips lub 100 pxs?
Dzięki.5 answers
Używa pikseli, ale jestem pewien, że zastanawiasz się, jak zamiast tego użyć dipów. Odpowiedź jest w TypedValue.applyDimension()
. Oto przykład jak przekonwertować dipy na px 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()));
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-03 14:46:09
Poprawnym sposobem uzyskania stałej liczby dipów w kodzie jest utworzenie pliku resources XML zawierającego wartości dp trochę jak:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="image_width">100dp</dimen>
<dimen name="image_height">75dp</dimen>
</resources>
Następnie odwołaj się do zasobu w kodzie w następujący sposób:
float width = getResources().getDimension(R.dimen.image_width));
float height = getResources().getDimension(R.dimen.image_height));
Float, który zwróciłeś, zostanie skalowany odpowiednio do gęstości pikseli urządzenia, więc nie musisz powielać metody konwersji w całej aplikacji.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-10 14:36:44
Metoda setWidth(100), Ustaw 100 px jako szerokość (Nie w dp). więc możesz napotkać problemy z różną szerokością na różnych androidach phones.So użyj pomiaru w dp zamiast pikseli.Użyj poniższego kodu, aby uzyskać pomiar w dp próbki szerokości = 300px i wysokości = 400px.
int width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 300, getResources().getDisplayMetrics());
int Height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 400, getResources().getDisplayMetrics());
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-01 06:35:38
float dps = 100;
float pxs = dps * getResources().getDisplayMetrics().density;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:34:37
Piksele oczywiście metoda pyta o piksele jako parametr.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-29 17:47:10