Лучший способ работать с экранами разных размеров одной категории на Android - PullRequest
1 голос
/ 28 октября 2011

Существуют эти категории размеров экрана Android: маленький, нормальный, ....

Я подумал, что, определяя экраны приложений для этих отдельно, можно было бы охватить почти 100% наиболее распространенных экранов, однако сегодня я ошибся:

Существует HTC Legend с 320 x 480 (ширина x высота) и Samsung Galaxy с 480 x 800, оба решили отображаться с обычным разрешением (так как у меня нет большого)

Как лучше всего справиться с этим? Мне действительно нужно определять все экраны в большом формате?

На самом деле ширина не проблема - те же определения работают для маленьких, нормальных, больших - но высота действительно создает проблемы.

Вы просто делаете экран прокручиваемым, чтобы высота работала?

Спасибо за любые идеи!

Ответы [ 2 ]

2 голосов
/ 28 октября 2011

Если вы хотите, вы можете дополнительно указать размер экрана по минимальному размеру.Вот каталог для размещения макетов для экранов с наименьшей шириной 600dp:

layout-sw600dp

Хотя, я думаю, это может работать только для> = 3.2 :(. Однако, может быть умный способВоспользуйтесь преимуществом выбора селектора. Читайте.

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

1 голос
/ 28 октября 2011

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

Это ломается, когда приложение удаляется и устанавливается снова позже.Но это тоже можно решить, так как в этом сценарии клиентское приложение будет вести себя как первоначальный запуск после загрузки.

...