-1
votes

Pourquoi la vue.Height est 3 fois plus grande que la hauteur réelle?

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

        }
    })


0 commentaires

5 Réponses :


2
votes

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 XXX


0 commentaires

2
votes

Ceci est juste parce que vous utilisez XXHDPI , où 120DP est en cours de convertie en 360px.

Doit lire


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


Si je l'explique en bref, dans MDPI 1DP est presque égal à 1px. Donc, si vous vérifiez votre code sur des périphériques de MDPI Résolution, vous obtiendrez 120px 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 Périphériques comme sortie.


0 commentaires

1
votes

en Java, vous obtenez la hauteur dans px au lieu de dp . Vous devez le convertir en dp pour obtenir des données correctes: xxx


0 commentaires

0
votes

Il y a une bibliothèque appelée SDP et SSP pour faire des dimensions réactives.


0 commentaires

0
votes

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.


0 commentaires