@BorisSPb007

Как определить реальное разрешение смартфона?

Сейчас занимаюсь переделкой дизайна сайта под мобильные устройства и столкнулся с таким вопросом.

Возьмем телефон Asus Zen Phone. У него заявлено разрешение 1280×720.
Почему тогда при разработке телефонные 1280x720 соответствуют 360x640? ()

Такие же данные показывают "инструменты разработчика" в Google Chrome при переходе в разработку пол мобильные устройства.

Зачем, чтобы узнать "реальное разрешение" смартфона, нужно делить на 2?
  • Вопрос задан
  • 1893 просмотра
Пригласить эксперта
Ответы на вопрос 3
Rou1997
@Rou1997
Видимо, путаете пиксели и dpi, 1280x720 - размер экрана в пикселях, ширина на высоту, а 360x640 - это dpi, сколько пикселей на дюйм ширины или дюйм высоты экрана.
Диагональ (в дюймах) сюда добавьте, по теореме Пифагора все должно приблизительно сойтись.

Как определить реальное разрешение смартфона?

Например, так:
String res = "result=";
		
		try {
		DisplayMetrics metrics = new DisplayMetrics();
		acti.getWindowManager().getDefaultDisplay().getMetrics(metrics);
		
		switch (metrics.densityDpi) {
		case DisplayMetrics.DENSITY_LOW:
			res += "ldpi";
			break;
		case DisplayMetrics.DENSITY_MEDIUM:
			res += "mdpi";
			break;
		case DisplayMetrics.DENSITY_HIGH:
			res += "hdpi";
			break;
		case DisplayMetrics.DENSITY_XHIGH:
			res += "xhdpi";
			break;
		case DisplayMetrics.DENSITY_XXHIGH:
			res += "xxhdpi";
			break;
		case DisplayMetrics.DENSITY_XXXHIGH:
			res += "xxxdpi";
			break;
		case DisplayMetrics.DENSITY_TV:
			res += "tv";
			break;
		default:
			res += "def" + metrics.densityDpi;
			break;
		}
		
		res += ", ";
		
		res += "dpi=[" + metrics.xdpi + "," + metrics.ydpi + "]";

		res += ", ";
		
		res += "pixels=[" + metrics.widthPixels + "," + metrics.heightPixels + "]";

		res += ", ";
		
		res += "scaledDensity=" + metrics.scaledDensity + "]";

		}
		catch (Exception ex) {
			Log.e("Analyticsutils", "Error1");
			ex.printStackTrace();
		}
		
		Log.i("Analyticsutils", res);

		if (showtoast) {
			try {
			Toast.makeText(acti, res, Toast.LENGTH_LONG).show();
			} catch (Exception ex) {
				Log.e("Analyticsutils", "Error2");
				ex.printStackTrace();
			}
		}
Ответ написан
@BorisSPb007 Автор вопроса
Спасибо за развернутый ответ, но я, наверное, с вашей версией не соглашусь.

Попробовал на своем смартфоне вашу версию. Его ширина в дюймах - 7''. 7 * 360px = 1008px но никак не 720px
Ответ написан
Комментировать
Ankhena
@Ankhena
Нежно люблю верстку
viewportsizes.com это размеры вьюпортов популярных устройств
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы