web-dev-qa-db-fra.com

Android Convertir Px en Dp (rapport d'aspect vidéo))

Duplicata possible:
conversion de pixels en dp dans Android

J'essaie de convertir des pixels en dp. Quelle est la formule?

Permet de convertir 640 et 480 en dp. Les docs disent ceci

La conversion des unités dp en pixels d'écran est simple: px = dp * (dpi/160)

Mais je ne pense pas que c'est ce dont j'ai besoin (et je ne sais pas comment l'utiliser). Je suppose que j'ai juste besoin du forumla. J'ai le code prêt:

DisplayMetrics metrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(metrics);

    switch(metrics.densityDpi)
    {
         case DisplayMetrics.DENSITY_LOW:
         int sixForty = ?
         int fourEighty = ?
         break;

         case DisplayMetrics.DENSITY_MEDIUM:
         int sixForty = ?
         int fourEighty = ?
         break;

         case DisplayMetrics.DENSITY_HIGH:
         int sixForty = ?
         int fourEighty = ?
         break;
    }
23
spentak

Au lieu d'essayer de déduire le facteur de conversion dp à partir de la classification de densité de l'écran, vous pouvez simplement l'interroger directement:

getWindowManager().getDefaultDisplay().getMetrics(metrics);
float logicalDensity = metrics.density;

logicDensity contiendra alors le facteur dont vous avez besoin pour multiplier dp par pour obtenir les dimensions physiques en pixels de l'écran de l'appareil.

int px = (int) Math.ceil(dp * logicalDensity);
76
mportuesisf