Android не соблюдает классификатор ldpi

Я хочу различать макет / рисование для следующих двух устройств:

1) 7" hdpi
2) 7" ldpi

Поэтому я использую следующие квалифицированные каталоги:

1) layout-sw600dp-hdpi / drawable-sw600dp-hdpi
2) layout-sw600dp-ldpi / drawable-sw600dp-ldpi

Но когда я работаю на 7-дюймовом устройстве с разрешением ldpi с размером экрана в пикселях 480x764, то Android (V4.0.3) выбирает версию hdpi. Почему это так? Когда я читаю документацию, ldpi должен лучше подходить.

Когда я полностью удаляю layout-sw600dp-hdpi / drawable-sw600dp-hdpi, он выбирает 2) и все в порядке. Но мне также нужна версия HDDP.

Так как же отличить 7-дюймовое устройство от ldpi / hpdi?

Спасибо!

Andrej

2 ответа

Я больше не могу найти ссылку, но мне кажется, что я где-то читал, что не следует использовать наименьшую ширину (swdp) или Avilable width (wdp) одновременно с плотностью пикселей экрана (ldpi, hdpi и т. Д.) И что результат такой комбинации был неопределенным.

Если у вас есть различные рисунки, которые будут отображаться для разной плотности пикселей экрана, вы должны поместить их в свой собственный растягиваемый реперторий, например drawable-ldpi/icon.png или drawable-hdpi/icon.png, отделить от репертуаров макета и оставить только swdp термин для этих макетов репертуаров.

Если поддержка нескольких экранов не работает, вы можете сделать это вручную:

Создайте bools-ldpi, bools-hdpi с флагами:

bools-ldpi содержит поле с именем "lowDp" = true bools-hdpi содержит поле с именем "highDp" = true и т. д.

В коде вы делаете if-else if-else:

if ( getresource "lowDp" ) 
    ...
else if ( getresource "highDp" ) 
    ...
...
Другие вопросы по тегам