J'ai une vision d'image avec hauteur définie sur 120DP. Quand je reçois la vue.Height, il est égal à 360, pourquoi ne sera-t-il pas égal à 120?
Je ne suis pas sûr du code ne sera pas utile mais: p>
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val layoutInflater: LayoutInflater = LayoutInflater.from(this) val view: View = layoutInflater.inflate(R.layout.activity_edit_profile, null) view.viewTreeObserver.addOnGlobalLayoutListener(object: ViewTreeObserver.OnGlobalLayoutListener { override fun onGlobalLayout() { // remove listener view.viewTreeObserver.removeOnGlobalLayoutListener(this) // insert coordinates (coor) of each image to imagePosition variables Log.d("TAG", profilePic1.height.toString()) // RETURNS 360 } })
5 Réponses :
Parce que dans le fichier XML, vous avez donné une taille dans DP et en Java, ce paramètre renvoie des valeurs en pixel, veuillez vérifier cela pour plus de compréhension de DP et Pixel
https://developer.android.com/training/multescreen/screendensités P>
Ceci est juste parce que vous utilisez Doit lire P>
Vous devriez lire résolution de l'image pour MDPI, HDPI, XHDPI et XXHDPI Pour comprendre comment DP et pixels fonctionnent ensemble. Et la documentation officielle peut être trouvée ici P>
Si je l'explique en bref, dans XXHDPI code>, où 120DP est en cours de convertie en 360px. P>
MDPI code> 1DP est presque égal à 1px. Donc, si vous vérifiez votre code sur des périphériques de
MDPI code> Résolution, vous obtiendrez
120px code> sortie. Mais comme j'ai ajouté une URL ci-dessus pour d'autres résolutions, il suit une règle de conversion de DP en PX. Il vous donnerait
180px dans HDPI, 240px dans XHDPI, 360px dans XXHDPI, 480px dans XXXHDPI CODE> Périphériques comme sortie. P>
en Java, vous obtenez la hauteur dans px code> au lieu de
dp code>. Vous devez le convertir en
dp code> pour obtenir des données correctes:
Parce que vous avez donné une hauteur dans DP (pixel de densité) tandis que dans le code lorsque vous le récupérez, il est récupéré en pixels uniquement. Vous devez le convertir en DP. P>