2015-02-28 3 views
1

У меня есть и андроид-проект, предоставляющий различные dimens.xml для разных экранов. Я делаю это, определяя папки values-swXXXdp в папке/res.Android: различать разрешения устройств при предоставлении ресурсов

Однако я сейчас возникли проблемы различения следующих двух разрешений экрана:

  1. 768x1280, 160dpi от
  2. 768x1024, 160dpi

То, что я пытался до сих пор:

  • Значения-sw768dp используются как для
  • значения-sw768dp-notlong используется для обоих, даже если значения-sw768dp присутствует
  • значения-h768dp-w1024dp игнорируется
  • значения-w768dp-h1024dp игнорируется

Кто-нибудь есть намек на то, что имя папки, которую я должен использовать, чтобы обеспечить dimens.xml ТОЛЬКО для разрешения экрана номер 2?

Спасибо заранее!

ответ

0

У кого-нибудь есть подсказка, какое имя папки я должен использовать, чтобы обеспечить dimens.xml ТОЛЬКО для разрешения экрана номер 2?

Я не думаю, что это возможно, по крайней мере, не с ш или ч классификаторов. Зачем? Согласно руководству Providing Resources на Android Developers вы можете указать минимальную ширину экрана или высоту, необходимую для загрузки определенного ресурса, но не максимально.

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

res/ 
    values/ 
    values-h1024dp/ 

Android имеет defined behavior совпадающих ресурсов в зависимости от конфигурации устройства. Когда вы открываете приложение на устройстве с высотой экрана 800dp, лучшим совпадением будет values, потому что 1024dp не подходит в 800dp. Однако, если вы откроете такое же приложение на более крупном устройстве с высотой экрана с 1024 или выше, оно будет использовать каталог values-h1024dp.

К сожалению, вы хотите использовать второй каталог ресурсов только для устройства определенных размеров, то есть 768dpx1024dp.

Предоставление ресурсов в Android разработано по-разному, как вы ожидали, но имеет way to achieve what you need - ресурсы псевдонимов.

Чтобы обеспечить структуру каталогов ресурсов, где только один каталог соответствует устройство с конфигурацией w1024dp, я бы создать следующую структуру:

res/ 
    values/ 
    values-h1024dp/ 
    values-h1025dp/ 

И в values-h1025dp создавать XML-файлы, содержащие псевдонимы ресурсов в values. Таким образом, вы можете иметь один файл ресурсов, который соответствует всем устройствам, кроме тех, которые имеют высоту экрана 1024dp.

Обратите внимание: он будет работать для устройств с установленной вами конфигурацией, но только в ландшафтном режиме, так как я использовал только h квалификатор.

Смежные вопросы