Ресурсы для разных планшетов андроид

Мне нужно разместить в приложении разные ресурсы для двух планшетов Samsung. 600x1024 (Samsung Galaxy Tab 7 дюймов) 800x1280 (Samsung Galaxy Tab 8,9 дюйма) Поэтому я создал две разные папки drawable-port (для 7 дюймов) и drawable-large-port( для 8,9 дюйма) в папке res, но оба устройства выбирают ресурсы из папки drawable-large-port.

когда я запускаю getResources().getConfiguration().screenLayout для обоих выходных устройств, получается SCREENLAYOUT_SIZE_LARGE

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

Спасибо, Нариндер.


person Nishu    schedule 20.07.2012    source источник
comment
Если оба устройства возвращают одинаковую конфигурацию, то они всегда будут брать ресурсы из одной и той же папки — с этим ничего не поделаешь.   -  person Aleks G    schedule 20.07.2012


Ответы (3)


Оба устройства имеют БОЛЬШИЕ экраны, поэтому в этом случае они оба получают один и тот же ресурс, когда просматривают ваши папки с возможностью рисования. Они всегда будут использовать drawable-large-port для портретной ориентации и drawable-large-land для альбомной ориентации.

Вы можете расширить эту функциональность, создав разные макеты для двух устройств, которые по-разному используют чертежи в drawable-large-port, чтобы использовать преимущества разного размера экрана. Вы можете определить различные размеры, как показано ниже, для ваших макетов:

res/layout-sw600dp/   // For 7” tablets (600dp wide and bigger)
res/layout-sw720dp/   // For 10” tablets (720dp wide and bigger)

Подробнее о работе с экранами/устройствами разного размера можно прочитать на странице http://developer.android.com/guide/practices/screens_support.html

person biddulph.r    schedule 20.07.2012
comment
@richard: хорошо, я буду использовать разные макеты, но как я могу использовать разные ресурсы, если оба макета будут выбирать ресурсы из drawable-large-port? - person Nishu; 21.07.2012
comment
Это не должно иметь значения — ресурсы должны иметь правильный размер для обоих устройств с точки зрения dpi, поэтому изменения макетов должно быть достаточно. - person biddulph.r; 23.07.2012

Вы можете измерить ширину экрана, используя:

    Display display = getWindowManager().getDefaultDisplay(); 
    int width = display.getWidth();
    int height = display.getHeight();
    System.out.println("width :: "+width);
    System.out.println("height :: "+height);

Затем вы можете установить Drawable, используя ширину как:

if(width == 600)
    // set drawable-1
else if(width == 800)
    // set drawable-2
person Chintan Raghwani    schedule 20.07.2012

Лучший результат поместил в чертежи следующее

---------------- для телефонов ------------------------

drawable-ldpi

drawable-mdpi

Drawable-hdpi

------------------ для 7-дюймовых планшетов ----------------

drawable-большой-mdpi

drawable-large-hdpi (для Nexus 7)

---------------- для 10-дюймовых планшетов ----------------

Drawable-xlarge-mdpi

person Yuvi    schedule 26.05.2015