Android: предоставление ресурсов

Я прочитал документацию и некоторые вопросы, но я не могу найти никакого ответа. Это мое первое полноценное приложение, и я хочу, чтобы оно по крайней мере корректно отображалось на разных размерах экрана, поэтому я использовал dp для единиц измерения и sp для текстовых представлений. Я пробовал это на разных устройствах и разных avd. Я заметил, что на большинстве устройств размер экрана прямо пропорционален плотности. (маленький экран имеет ldpi, обычный экран имеет mdpi, большой экран имеет hdpi, большой экран имеет xhdpi). При этом мой макет по умолчанию отображается на устройствах, которые следуют этой тенденции. Однако есть устройства, которые не следуют этой тенденции (например, Samsung Galaxy Tab, у которого, если я не ошибаюсь, большой-mdpi), поэтому, когда я попробовал свой макет, экран-заставка (да, я знаю, что экраны-заставки раздражает и не рекомендуется) имеет пикселизацию, а тексты мелкие.

Я хочу, чтобы экран-заставка зависел от размера экрана, а размеры текста зависели бы от размера и плотности экрана. Как мне этого добиться? Спасибо.


person TheMackyMariano    schedule 03.11.2013    source источник
comment
Взгляните на это Поддержка нескольких экранов. Надеюсь, вы получите ответ.   -  person androidcodehunter    schedule 03.11.2013


Ответы (1)


Посетите эту страницу: устройства Android.

Он показывает множество устройств и их соответствующую статистику. Затем вам нужно решить, как лучше всего настроить таргетинг на устройство, которое не отображает информацию правильно.

Я думаю, что лучше всего использовать папки с разными значениями, где вы можете создавать разные папки на основе уровня API (например, values-v11 для всех устройств, использующих API 11 или меньше) или размера экрана (например, значения-small через values-xlarge). Затем вы создаете разные файлы styles.xml, dimens.xml и даже colors.xml.

В макетах вы назначаете каждому виджету стиль, в котором используются разные размеры, или вы можете просто поместить значения размеров в стили, или вы можете установить значения из файла dimens.xml в файле макета.

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

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

Galaxy Tab — это планшет с размером экрана 1024 х 600. Здесь вы хотите иметь другую папку значений (values-xlarge). Вы также можете определить для него специальные стили, используя размеры, которые подходят для планшета. Файлы styles.xml, dimens.xml для него кладете в папку values-xlarge.

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

person Rick Falck    schedule 03.11.2013
comment
что касается планшета, то пока поддерживаю только портретную ориентацию. поэтому я ожидаю, что планшеты будут вести себя как телефоны, но с более крупными шрифтами и прекрасными рисунками. спасибо за предложения, однако. возможно, когда у меня будет больше времени, я попробую ваше предложение для планшета. - person TheMackyMariano; 03.11.2013
comment
Я тоже только учусь этому. Я повторяю то, что я узнал, прочитав книгу Big Nerd Ranch Android, а затем обсуждая это с ними на их форуме. Мне пришлось переделать свое приложение, когда я понял, что dp и sp масштабируются с dpi. Вам действительно нужно обратиться к портрету и пейзажу. Очень важно для хорошего приложения. - person Rick Falck; 03.11.2013
comment
Есть ли pdf этой книги? Моя ссылка была Head First Android Dev't, но она просто научила меня основам. Некоторым я должен научиться сам. - person TheMackyMariano; 03.11.2013