Как создать разные макеты для Galaxy S3 и Nexus 7?
Я создал приложение для Android, которое работает правильно для Nexus 7. Внутри папки ресурсов, я создал две папки, layout
, layout-land
для Nexus 7". Все работало нормально до настоящего времени. Теперь я хочу создать другой макет для Samsung Galaxy S3. Для этого я создал папки внутри ресурсов с layout-large
& layout-large-land
, Но здесь есть проблема. Теперь для Nexus 7 макет, определенный в layout-large
папка загружается. Как это остановить? Как создать другой макет для вкладки Nexus 7"и мобильного Galaxy S3? Я прочитал документацию по поддержке нескольких экранов. Но я не мог понять, как размер экрана для Nexus 7 составляет 1204 X 800, а размер экрана для Samsung Galaxy S3 - 720 Х 1280
Как создать разные макеты для разных устройств с разными разрешениями экрана и размерами экрана? Кроме того, исходя из размера устройства, я хочу изменить несколько значений в моем приложении. Как это сделать?
4 ответа
В соответствии с поддержкой нескольких экранов
Отборочные как small
, normal
, large
а также xlarge
для Screen Sizes
Это означает, что Nexus 7 будет использовать ресурсы с large
квалификатор, если вы предоставите. Поэтому, прежде чем создавать папку с large
квалификатор, Nexus 7 загрузит ресурсы из папки макета по умолчанию. Что касается ldpi
, mdpi
, hdpi
а также xhdpi
для плотности экрана.
Чтобы решить вашу проблему, вам необходимо:
поместите определения макетов для Galaxy S3 в макет и layout-sw600dp для Nexus 7. Пожалуйста, обратитесь к блогу разработчиков Android: подготовка вашего приложения для Jelly Bean и Nexus 7
поместите ресурсы (изображения или материалы для рисования) для Galaxy S3 в drawable-xhdpi и drawable-tvdpi или drawable-hdpi для Nexus 7.
Надеюсь, что это поможет вам, и, пожалуйста, дайте мне знать, если у вас есть другие проблемы:)
Вот несколько полезных ссылок:
Вам нужен один для xlarge и xlarge-land, а также
Или вы можете сделать это программно, позвонив:
Display displayparm= activity.getWindowManager().getDefaultDisplay();
int width= displayparm.getWidth();
int Height= displayparm.getHeight();
и выбирая макет из этой информации
Вы можете создать макет, добавив новую папку в папку res как layout-xlarge и layout-xlarge-large, и вам также нужно обновить файл манифеста Android, чтобы поддерживать более высокое разрешение.
Я разработал приложение, в котором я поддерживаю несколько устройств с разным разрешением и плотностью. с Nexus 7 и Galaxy S3 также один из них. galaxy s3 и nexus 7, очевидно, возьмут из папки большого экрана, если в вашем проекте есть папка с макетом большого размера. Но galaxy s3 подпадает под категорию больших HDDP, а Nexus7 подпадает под категорию больших TVDI. так что это будет очень полезно, если у вас есть layout-large-hdpi и layout-large-tvdpi для s3 и nexus 7 соответственно.