Android: как программно определить точные пропорции пикселей устройства?

Я хочу отображать плитки, которые, как предполагается, все квадраты в моем приложении для Android, используя OpenGL ES 2.0.

Возможно ли приложение, установленное на устройстве Android, программно определить точное соотношение сторон отдельных пикселей экрана устройства без каких-либо входов от пользователя?

Я думаю, что вы ищете класс DisplayMetrics . Он имеет поля heightPixels и widthPixels которые дают размеры экрана, а также другую полезную информацию, такую ​​как плотность пикселей.

Как указано в документации, вы можете получить DisplayMetrics для своего устройства с помощью getWindowManager().getDefaultDisplay().getMetrics(metrics);

Я бы не рекомендовал использовать значения xdpi и ydpi, которые вы получаете из Display.getMetrics. Известно, что эти значения являются некорректными для некоторых устройств (например, на Huawei Ascend P1 я получаю значения xdpi и ydpi 152.4 и 451.6, которые, безусловно, удалены, пиксели гораздо более квадратные). Если вы попытаетесь нарисовать идеальный квадрат, основанный на этих неправильных значениях, вы можете получить сильно растянутый прямоугольник на некоторых устройствах. На данный момент лучший совет, который я имею, заключается в том, чтобы предположить, что пиксели являются квадратными, что я понимаю, это не идеальная ситуация. См. https://groups.google.com/forum/#!topic/android-developers/g56jV0Hora0 . Код платформы Android не использует эти значения. Вместо этого плотность и плотностьDPI используются для координат x и y. Вы даже можете попытаться сравнить ваши значения xdpi и ydpi, и если они значительно отличаются, то по умолчанию квадратные пиксели, хотя я думаю, что это также было бы грязным решением.

Intereting Posts
Не удается открыть файл keycharmap в android Без анимации при переключении с фрагмента на активность и обратно Android отменяет Toast при выходе из приложения и когда отображается тост Отключить режим полета в Android Карта не работает после установки из магазина воспроизведения в Android Андроид с использованием полей по нескольким размерам экрана При использовании Proguard вам нужна отдельная конфигурация для каждой справочной библиотеки? Ссылка RTSP youtube Как открыть цифровую клавиатуру при нажатии на EditText? Работа с изображениями в разработке приложений для Android Как запустить приложение Android во всех подключенных устройствах или эмуляторах одновременно с Android Studio? Как переносить Android-приложение на платформу iOS? Анкета OAuth для повторного дооснащения доступа Eclipse автоматически создает фрагмент, как его отключить Разница между форматами изображений RGB888 и ARGB8888