Android: как получить доступ к различным макетам в зависимости от плотности экрана в XML

Мне интересно, как получить разные файлы макета XML для чтения в зависимости от плотности экрана.

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

Я читал на Android dev. страницу о том, как разрабатывать для разных экранов, но я не получил примеры, которые там были.

Я использовал dp/dip для размеров, поэтому нет необходимости предлагать это =)


person sandmaster    schedule 08.04.2012    source источник


Ответы (2)


вы можете сделать это, создав макет для каждого стандартного размера экрана,

вы можете найти здесь, как это сделать.

res/layout/my_layout.xml             // layout for normal screen size ("default")
res/layout-small/my_layout.xml       // layout for small screen size
res/layout-large/my_layout.xml       // layout for large screen size
res/layout-xlarge/my_layout.xml      // layout for extra large screen size
res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation

res/drawable-mdpi/my_icon.png        // bitmap for medium density
res/drawable-hdpi/my_icon.png        // bitmap for high density
res/drawable-xhdpi/my_icon.png       // bitmap for extra high density

это означает, что вы должны создать подкаталог с именем ("layout", "layout-small", "layout-large", "layout-xlarge", "layout-xlarge-land") в папке res.

чем создать основной xml для каждого с тем же именем.

person Okan Kocyigit    schedule 08.04.2012

Поместив XML-файлы макета в разные папки, вы можете заставить Android загружать правильный файл в зависимости от плотности экрана. Например, если ваш макет называется «main.xml»:

  • Размещение файла в /res/layout-ldpi/main.xml будет означать, что он используется только при низкой плотности (или выше).
  • Размещение файла в /res/layout-mdpi/main.xml будет означать, что он используется только в средней плотности (или выше).
  • Размещение файла в /res/layout-hdpi/main.xml будет означать, что он используется только при высокой плотности (или выше).
  • Размещение файла в /res/layout-xhdpi/main.xml будет означать, что он используется только в сверхвысокой плотности.

Вы можете сделать то же самое со всеми ресурсами — чертежами, строками, измерениями и т. д. (например, drawable-mdpi или values-en [значения для использования только в английской локали]). Вы можете найти полный список различных настроек устройств, поддерживаемых этой системой, по адресу http://developer.android.com/guide/topics/resources/providing-resources.html (Таблица 2: Имена квалификаторов конфигурации)

person Henry Thompson    schedule 08.04.2012