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" )
...
...