SetWidth (int pixels) utilise-t-il comme unité un pixel indépendant du périphérique ou un pixel physique? Par exemple, setWidth (100) définit-il la largeur d'une vue sur 100 creux ou 100 px?
Merci.
SetWidth (int pixels) utilise-t-il comme unité un pixel indépendant du périphérique ou un pixel physique? Par exemple, setWidth (100) définit-il la largeur d'une vue sur 100 creux ou 100 px?
Merci.
Il utilise des pixels, mais je suis sûr que vous vous demandez comment utiliser les creux à la place. La réponse est là TypedValue.applyDimension()
. Voici un exemple de conversion de creux en px dans le code:
// Converts 14 dip into its equivalent px
Resources r = getResources();
int px = Math.round(TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, 14,r.getDisplayMetrics()));
La bonne façon d'obtenir un nombre constant de DIP dans le code est de créer un fichier XML de ressources contenant des valeurs de dp un peu comme:
Puis référez-vous à la ressource dans votre code comme ceci:
Le flottant que vous avez renvoyé sera mis à l'échelle en fonction de la densité de pixels de l'appareil et vous n'avez donc pas besoin de continuer à répliquer une méthode de conversion dans toute votre application.
la source
Méthode setWidth (100), définissez 100 px comme largeur (pas en dp) .Vous pouvez donc rencontrer des problèmes de largeur variable sur différents téléphones Android.Utilisez donc la mesure en dp au lieu de pixels.Utilisez le code ci-dessous pour obtenir une mesure en dp de la largeur de l'échantillon = 300px et hauteur = 400px.
la source
Source (@Romain Guy)
la source
Pixels bien sûr, la méthode demande des pixels comme paramètre.
la source
Sur la base des réponses ci-dessus qui fonctionnent bien pour moi, je génère des méthodes d'aide , il suffit de les ajouter dans vos utils pour les utiliser dans tout le projet.
la source