Je fais:
button.setLayoutParams(new GridView.LayoutParams(65, 65));
Selon les documents, les unités de largeur et de hauteur (65 dans les deux ci-dessus) sont des "pixels". Comment forcez-vous cela à être des pixels indépendants du périphérique, ou "dp"?
dp
àpx
? Merci.Je sais que c'est une vieille question mais j'ai trouvé une façon beaucoup plus soignée de faire cette conversion.
Java
Kotlin
la source
65
précède est la valeur DP que vous souhaitez convertir en PXEn regardant votre besoin, il existe également une solution alternative. Il semble que vous connaissiez les dimensions en dp au moment de la compilation, vous pouvez donc ajouter une entrée dimen dans les ressources. Ensuite, vous pouvez interroger l'entrée dimen et elle sera automatiquement convertie en pixels dans cet appel:
Et votre dimens.xml aura:
En étendant cette idée, vous pouvez simplement stocker la valeur de 1dp ou 1sp comme entrée dimen et interroger la valeur et l'utiliser comme multiplicateur. En utilisant cette approche, vous isolerez le code des trucs mathématiques et compterez sur la bibliothèque pour effectuer les calculs.
la source
La manière la plus simple (et fonctionne même depuis l'API 1) qui a été testée est:
Des documentations:
Oui, il arrondit la valeur mais ce n'est pas très mauvais (juste dans les valeurs impaires sur les périphériques hdpi et ldpi, il faut ajouter une petite valeur lorsque ldpi n'est pas très courant) J'ai testé dans un périphérique xxhdpi qui convertit 4dp en 16 (pixels) et c'est vrai.
la source