J'ai deux Android avec la même résolution
Device1 -> résolution 480x800 diagonale de l'écran -> 4,7 pouces
Device2 -> résolution 480x800 diagonale de l'écran -> 4,0 pouces
Comment trouver la taille d'écran diagonale de l'appareil?
Détecter les tablettes de 7 pouces et 10 pouces par programme
J'ai utilisé le lien ci-dessus, mais il donne aux deux appareils une taille d'écran diagonale -> 5,8
essayez ce code pour obtenir la taille de l'écran en pouces
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int width=dm.widthPixels;
int height=dm.heightPixels;
double wi=(double)width/(double)dm.xdpi;
double hi=(double)height/(double)dm.ydpi;
double x = Math.pow(wi,2);
double y = Math.pow(hi,2);
double screenInches = Math.sqrt(x+y);
Ça ne marchera pas?
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
double x = Math.pow(dm.widthPixels / dm.xdpi, 2);
double y = Math.pow(dm.heightPixels / dm.ydpi, 2);
double screenInches = Math.sqrt(x + y);
Log.d("debug", "Screen inches : " + screenInches);
N'oubliez pas de multiplier la taille de l'écran par la densité mise à l'échelle si vous faites ce que j'ai fait et de modifier la taille des éléments en fonction de la taille de l'écran. par exemple.:
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
double x = Math.pow(dm.widthPixels / dm.xdpi, 2);
double y = Math.pow(dm.heightPixels / dm.ydpi, 2);
double screenInches = Math.sqrt(x + y) * dm.scaledDensity;
Log.d("debug", "Screen inches : " + screenInches);
Notez l'avant-dernière ligne! Voici plus d'informations sur les éléments scaledDensity: Qu'est-ce que DisplayMetrics.scaledDensity retourne réellement dans Android?
DisplayMetrics displayMetrics = context.getResources () .GetDisplayMetrics (); String screenWidthInPix = displayMetrics.widthPixels; String screenheightInPix = displayMetrics. heightPixels;
Théorème de Pythagore pour trouver la taille diagonale de Android écran de téléphone/tablette, le même principe peut être appliqué à l'écran d'iPhone ou de Blackberry.
Essayez comme ci-dessous dans l'autre sens:
DisplayMetrics met = new DisplayMetrics(); this.getWindowManager().getDefaultDisplay().getMetrics(met);// get display metrics object String strSize = new DecimalFormat("##.##").format(Math.sqrt(((met.widthPixels / met.xdpi) * (met.widthPixels / met.xdpi)) + ((met.heightPixels / met.ydpi) * (met.heightPixels / met.ydpi)))); // using Dots per inches with width and height
Essaye ça:
public static Boolean isTablet(Context context) {
if ((context.getResources().getConfiguration().screenLayout &
Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE) {
return true;
}
return false;
}
Aucune des réponses ci-dessus n'a donné une taille d'écran correcte ... Mais la méthode ci-dessous le fait correctement.
private String getScreenSize() {
Point point = new Point();
((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getRealSize(point);
DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
int width=point.x;
int height=point.y;
double wi=(double)width/(double)displayMetrics.xdpi;
double hi=(double)height/(double)displayMetrics.ydpi;
double x = Math.pow(wi,2);
double y = Math.pow(hi,2);
return String.valueOf(Math.round((Math.sqrt(x+y)) * 10.0) / 10.0);
}
Remarque: cela ne fonctionne que sur l'API 17 et supérieure.