Разрешения и размеры экрана Android - PullRequest
0 голосов
/ 26 октября 2010

В настоящее время я работаю над приложением для Android, которое вызывает у меня некоторые проблемы. Мое приложение сильно зависит от изображений, которые правильно отображаются на экране, на котором они отображаются. К сожалению, такие вещи, как разница в разрешении FWVGA / WVGA 854 против 800, вызывают у меня некоторые реальные проблемы, и это помимо других размеров / плотностей и разрешений.

Я не знаю, просто ли я здесь упускаю суть, но как мне обеспечить правильное отображение моего приложения в обоих разрешениях, не «раздавливая» мои изображения, не обрезая кусочки, давая мне черные полосы и т.д.?

Похоже, не существует немедленного решения, когда я могу просто отобразить другое изображение автоматически из папки для рисования для правого экрана.

Я пытался использовать displaymetrics, но, если у меня не будет моего манифеста о том, что он поддерживает все размеры экрана, ОС Android фактически «врет» моему приложению о текущем разрешении.

Кто-то, пожалуйста, скажите мне, что есть простое решение.

Ответы [ 3 ]

2 голосов
/ 27 октября 2010

как мне правильно отображать приложение в обоих разрешениях, не "раздавливая" мои изображения и не обрезая кусочки, давая мне черные полосы и т. Д.?

ИМХО, вы начинаете с пересмотра вашего дизайна GUI:

Мое приложение сильно зависит от изображений, которые правильно отображаются на экране, на котором они отображаются.

Это нигде не работает особенно хорошо, ИМХО. Windows (включая браузеры) может быть изменен пользователем до любого желаемого размера, например.

Похоже, не существует немедленного решения, в котором я могу просто отобразить другое изображение автоматически из папки для рисования для правого экрана.

Поскольку устройства Android могут иметь любое количество размеров экрана, точно так же, как окна и веб-браузеры могут иметь любое количество размеров экрана. Android позволяет выбирать изображения на основе плотности (например, -hdpi) или размера экрана (например, -large), но они не соответствуют разрешениям и не должны.

1 голос
/ 27 октября 2010

Как отмечает CommonsWare, лучше всего в этой ситуации переосмыслить структуру макета. Вероятно, можно добиться аналогичных, если не идентичных результатов, которые вы имеете в настоящее время, используя RelativeLayouts и виджеты. Если вы хотите опубликовать образец, мы можем посоветовать вам, как это сделать.

При этом ответом на ваш вопрос будет запрос устройства во время выполнения для определения его разрешения экрана (учитывая пространство, занимаемое панелью уведомлений и строкой заголовка - если вы не зададите тему без строки заголовка ). Вам потребуется другое изображение для каждого возможного разрешения экрана, и, поскольку все больше устройств (особенно планшетов) начинают выпускать, вам придется продолжать предоставлять больше изображений и настраиваемый код для каждого отдельного изображения по мере их выпуска. Вы можете понять, почему это не идеальная ситуация.

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int screenWidth = metrics.widthPixels();
int screenHeight = metrics.heightPixels();

Затем вы можете поместить это в блок if-then-else, определить разрешение и соответственно настроить изображение. Я не рекомендую это.

0 голосов
/ 27 октября 2010

Когда дело доходит до дисплеев и разрешений, невозможно изменить размеры ваших изображений до любого соотношения сторон без их сжатия или растяжения или использования почтовых ящиков.Я знаю, что это на самом деле не отвечает на ваш вопрос, но если вы не можете получить достоверную информацию о размере экрана из ОС, попробуйте выбрать изображения для наибольшего разрешения и обрезать их для меньшего разрешения.Просто убедитесь, что вокруг границ нет ничего интересного.

...