#android #screen
#Android #экран
Вопрос:
Существуют следующие категории размеров экрана Android: small, normal, ….
Я думал, что, определяя экраны приложений для них отдельно, можно было бы охватить почти 100% наиболее распространенных экранов, однако сегодня я оказался неправ:
Есть HTC Legend с разрешением 320 x 480 (ширина x высота) и Samsung Galaxy с разрешением 480 x 800, оба были выбраны для отображения с нормальным разрешением (поскольку у меня нет большого)
Каков наилучший способ справиться с этим? Мне действительно нужно определять все экраны в большом формате?
На самом деле ширина не проблема — одни и те же определения работают для small, normal, large, но высота действительно создает проблемы.
Вы просто делаете экран увеличиваемым, чтобы высота работала?
Спасибо за любые идеи!
Ответ №1:
Если вы хотите, вы можете дополнительно указать размер экрана по минимальному размеру. Вот каталог для размещения макетов для экранов с наименьшей шириной 600dp:
layout-sw600dp
Хотя, я думаю, это может работать только для> = 3.2 : (. Однако может быть разумный способ воспользоваться приоритетом селектора. Прочитайте.
Я знаю, что рекомендовать это немного поздно, но в целом попробуйте использовать линейную компоновку, веса и 9-patch, чтобы убедиться, что ваш макет можно использовать для всех разрешений. В идеале вам нужно только другое расположение для xlarge по сравнению с остальными.
Ответ №2:
Одна вещь, которую нужно сделать, это использовать изображения с 9 патчами везде, где это возможно, другим подходом было бы настроить механизм на стороне сервера, который сообщит клиенту, какую папку ресурсов использовать. Итак, при первом запуске после загрузки клиент отправляет серверу строку агента пользователя handsets. Сервер определяет наилучший размер ресурсов и отправляет эту информацию обратно клиенту, который ее кэширует. Отсюда клиент знает, какую папку использовать.
Это прерывается, когда приложение удаляется и устанавливается снова позже. Но это тоже можно решить, так как в этом случае клиентское приложение будет вести себя как начальный запуск после загрузки варианта использования.
Комментарии:
1. Я не уверен, что полностью понимаю, но вы имеете в виду, что я не могу использовать «стандартные» инструменты на телефоне / Android, но должен выполнить настройку сервера / клиента для моего приложения? Я думал, что при запуске приложения оно проверяет, какой макет экрана лучше всего подходит при каждом запуске приложения (это какой-то дешевый сервер / клиент) — это то, что вы имеете в виду?
2. Мой ответ — ОДИН из способов сделать это. Я уверен, что есть и другие способы. И да, этот механизм не является стандартным для Android, но довольно стандартным для мобильной разработки. Итак, вы правы, при этом не используются «стандартные» инструменты Android. Мой механизм полностью отличается от того, что приложение делает в контексте Android. Надеюсь, это поможет понять это.