Макет для необычных экранов - PullRequest
2 голосов
/ 07 декабря 2011

Некоторые пользователи, загружающие мои приложения, жалуются на то, что им не удалось установить приложение, так как оно закрылось, так как макет MainActivity.class не найден.После расследования я понял, что эти мобильные телефоны имеют необычные экраны.

Например, одним из таких телефонов является HTC ChaCha, экран которого составляет 480 x 320 пикселей, 2,6 дюйма (плотность пикселей ~ 222 ppi).Согласно этим спецификациям, это обычный экран, MDPI.

Однако, поскольку его экран установлен в альбомном режиме (широкоэкранный мобильный экран), Android не распознает его как обычный MDPI, а как что-то другое, а затем пытается извлечь XML-макет из / layout layout.Макет Main.xml в этом каталоге не предусматривает такие необычные экраны, и макет ломается (значки макета слишком большие и, вероятно, извлечены из каталога для рисования HDPI).

Как сделать макет XML для таких необычных телефонов?

PS.Еще один вопрос.Когда я создаю эмулятор для этого телефона через Android SDK Manager, я должен установить для "Abstracted LCD density" значение 222 или оставить значение 160 ???

Ответы [ 3 ]

2 голосов
/ 07 декабря 2011

Проблема HTC Chacha на самом деле заключается в экранном аспекте. Это «длинный» экран (например, HTC Wildfire, если я прав).

Чтобы создать определенную раскладку для этого телефона (и всех экранов с соотношением 4/3), просто создайте раскладку в каталоге layout-notlong.

res
|---layout-notlong
    |----mylayout.xml
1 голос
/ 07 декабря 2011

Вы уверены, что ошибка в том, что класс деятельности не может быть найден?

Некоторые производители устройств неправильно описывают плотность своих экранов. Плотность не зависит от физического размера и количества пикселей. Некоторые сделали это по причинам совместимости; например, оригинальная Samsung Galaxy Tab (выпущенная до Honeycomb, поэтому технически не «готовая для планшета») сообщает о себе как HDPI, так что графика и макеты выбираются так, чтобы использовать экран больше как телефон.

Что касается ваших макетов, если у вас есть приличное значение по умолчанию (в res/layout/), оно будет выбрано, если более конкретные макеты недоступны (например, res/layout-land/ или res/layout-large/). Помните, что каждое представление id, на которое вы ссылаетесь в коде, должно быть доступно во всех макетах. Держите их всех в курсе друг друга, или вы в конечном итоге будете вести себя непоследовательно.

Если вы усердно работаете над созданием графики как минимум для трех основных плотностей (ldpi, mdpi и hdpi), вы не должны видеть слишком большие значки, за исключением случаев, когда экран физически меньше, чем ожидает его макет. Кроме того, используйте dp в ваших макетах вместо px.

0 голосов
/ 07 декабря 2011

Возможно, хорошим началом для выявления проблемы является проверка отчетов об ошибках приложений

в вашей учетной записи издателя Android Market .

Нажмите Erros (2) рядом с вашим приложением в списке приложений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...