SetWidth (int pixels) utilise-t-il dip ou px?

SetWidth (int pixels) utilise-t-il un pixel ou un pixel physique indépendant du périphérique comme unité? Par exemple, setWidth (100) définit-il la largeur d’une vue à 100 dips ou 100 px?

Merci.

Il utilise des pixels, mais je suis sûr que vous vous demandez comment utiliser Dips à la place. La réponse est dans TypedValue.applyDimension() . Voici un exemple de conversion de dips 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.getDisplayMesortingcs())); 

La méthode correcte pour obtenir un nombre constant de DIP dans le code consiste à créer un fichier XML de ressources contenant des valeurs dp un peu comme:

   100dp 75dp  

Ensuite, référez-vous à la ressource dans votre code comme ceci:

 float width = getResources().getDimension(R.dimen.image_width)); float height = getResources().getDimension(R.dimen.image_height)); 

Le flottant que vous avez renvoyé sera redimensionné en conséquence pour la densité de pixels de l’appareil et vous n’avez donc pas besoin de continuer à répliquer une méthode de conversion dans votre application.

Méthode setWidth (100), définir 100 px en largeur (pas en dp) .Vous pouvez donc faire face à des problèmes de largeur sur différents téléphones Android. Utilisez alors la mesure en dp au lieu de pixels.Utilisez le code ci-dessous pour obtenir la mesure en dp de la largeur de l’échantillon = 300px et hauteur = 400px.

 int width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 300, getResources().getDisplayMesortingcs()); int Height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 400, getResources().getDisplayMesortingcs()); 
 float dps = 100; float pxs = dps * getResources().getDisplayMesortingcs().density; 

Source (@Romain Guy)

Bien sûr, la méthode demande des pixels en paramètre.