Как получить размер экрана устройства Android?

У меня два андроид устройства с одинаковым разрешением

Device1 -> разрешение экрана 480х800, размер экрана -> 4,7 дюйма

Device2 -> разрешение экрана 480х800, размер экрана -> 4,0 дюйма

Как узнать размер диагонали устройства?

Обнаружение 7-дюймового и 10-дюймового планшета программно

Я использовал вышеуказанную ссылку, но она дает диагональ экрана обоих устройств -> 5,8

6 ответов

Решение

Попробуйте этот код, чтобы получить размер экрана в дюймах

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);

Это не сработает?

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); 

Не забудьте умножить размер экрана на scaledDensity, если вы делаете то, что я сделал, и изменить размер материала в зависимости от размера экрана. например:

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); 

Обратите внимание на вторую последнюю строку! Вот более подробная информация о scaledDensity: Что фактически возвращает DisplayMetrics.scaledDensity в Android?

Ни один из приведенных выше ответов не дал правильный размер экрана... Но приведенный ниже метод делает это правильно.

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);
}

Примечание. Это работает только для API 17 и выше.

Попробуй это:

 public static Boolean isTablet(Context context) {

    if ((context.getResources().getConfiguration().screenLayout & 
            Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE) {

      return true;
  }
    return false;
}
DisplayMetrics displayMetrics = context.getResources()
                    .getDisplayMetrics();

String screenWidthInPix = displayMetrics.widthPixels;

String screenheightInPix = displayMetrics.heightPixels;

Теорема Пифагора, чтобы найти диагональный размер экрана телефона / планшета Android, тот же принцип может быть применен к экрану iPhone или Blackberry.

Попробуй как ниже другой способ:

  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
Другие вопросы по тегам