Create landscape variation android studio

Ресурсы для разных экранов

Ресурсы для разных экранов

Адаптивный layout — это layout, который предназначен для работы с различными размерами и ориентациями экрана, а также с различными устройствами, на различных языках и версиях Android.

В этом уроке вы узнаете, как создать адаптивный layout путем экстернализации (вынесения в отдельные компоненты) и группировки ресурсов, предоставляя альтернативные ресурсы и ресурсы по умолчанию для вашего приложения.

Экстернализация ресурсов (вынесение данных во внешний файл)

Чтоб экстернализировать ресурсы, нужно хранить их отдельно от кода приложения. Например, вместо того, чтобы жёстко прописывать какую-то строку в коде, вам нужно дать имя строки и добавить её в файл strings.xml , который в Android Studio вы можете найти на панели Project > Android в папке res > values.

Во внешние файлы также необходимо выносить такие ресурсы, как иконки, layouts, drawables (графические объекты). Это позволит:

  • Поддерживать внешние ресурсы отдельно от остальной части кода. Если необходимо изменить ресурс, который используется в коде в нескольких местах, это можно сделать единожды в одном месте.
  • Предоставить альтернативные ресурсы, которые будут поддерживать определённые конфигурации устройств (например, устройства с различными языками или разными размерами экрана).

Группировка ресурсов

Сохраняйте все ресурсы в папке res. Сортируйте их по типу в отдельные папки внутри res. Для этих папок нужно использовать стандартизированные имена.

Например, на скриншоте ниже показана иерархия файлов для небольшого проекта, которую можно увидеть на панели Project > Android. Папки, которые содержат ресурсы этого проекта по умолчанию, используют стандартизированные имена: drawable, layout, menu, mipmap (для иконок) и values.

В таблице ниже перечислены основные стандартизированные имена папок ресурсов.

Стандартизированные имена папок ресурсов

Имя папки Тип ресурса
color XML-файлы, определяющие «списки состояний» цветов (эти файлы отличаются от файла colors.xml в папке values).
drawable Файлы растровых изображений (WebP, PNG, 9-patch, JPG, GIF) и XML-файлы, скомпилированные в графические объекты.
mipmap Иконки приложения для разных плотностей пикселей экрана.
layout XML-файлы, определяющие пользовательский интерфейс.
menu XML-файлы, определяющие меню приложений (например, меню параметров).
values XML-файлы, содержащие простые значения, такие как строки, целые числа и цвета. Для удобства разместите уникальные типы ресурсов в разных файлах. Можете использовать следующие варианты наименований файлов ресурсов в этой папке:
  • arrays.xml для массивов ресурсов,
  • dimensions.xml для значений различных размеров в интерфейсах,
  • strings.xml , colors.xml , styles.xml |

Альтернативные ресурсы

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

Если для какой-либо конфигурации устройства нет доступных ресурсов, Android воспользуется ресурсами приложения по умолчанию.

Как и ресурсы по умолчанию, альтернативные ресурсы хранятся в папках внутри res. Для этих папок используется следующий шаблон названия:

  • resource_name — это имя папки для этого типа ресурса (см. табл. выше) Например, drawable или values.
  • config_qualifier определяет конфигурацию устройства, для которого будут использоваться ресурсы. Все возможные квалификаторы рассматриваются здесь (таблица 2).
  • Чтобы добавить несколько квалификаторов к одному имени папки, разделите их с помощью тире. Если вы используете несколько квалификаторов для папки ресурса, их нужно расположить в порядке их перечисления в таблице.

Примеры с одним квалификатором:

  • Строковые ресурсы, локализованные на японский язык, будут находиться в файле strings.xml внутри папки values-ja в папке res (сокращенно res/values-ja/strings.xml ). Строковые ресурсы по умолчанию (ресурсы, которые должны использоваться, когда не найдено специфичных для языка ресурсов) будут находиться в файле res/values/strings.xml . Обратите внимание, что XML-файлы имеют одинаковые имена, в данном случае — strings.xml .
  • Стили компонентов для API уровня 21 и выше будут находиться в файле res/values-v21/styles.xml . Ресурсы стилей по умолчанию находятся в res/values/styles.xml .

Пример с несколькими квалификаторами:

  • Layout-ресурсы, предназначенные для расположения элементов справа налево и использования в «ночном» режиме, будут находиться в папке res/layout-ldrtl-night/. Это правильное имя папки, потому что в таблице квалификатор для направления элементов указан до того, как указан квалификатор для ночного режима. Папка с именами квалификаторов в обратном порядке (res/layout-night-ldrtl) будет неправильной.

Создание альтернативных ресурсов

Чтобы создать папки альтернативных ресурсов в Android Studio, выберите Android на панели Project, согласно указателю на рисунке ниже.

Чтобы использовать Android Studio для создания новой папки альтернативных ресурсов для определённой конфигурации в папке res, придерживайтесь следующей инструкции:

  1. Убедитесь, что вы используете панель Project > Android, как показано выше.
  2. Щелкните правой кнопкой мыши по папке res и выберите New > Android resource directory. Откроется диалоговое окно создания нового ресурса.
  1. Выберите необходимые для данного набора альтернативных ресурсов тип и квалификаторы.
  2. Нажмите ОК.

Сохраните альтернативные ресурсы в новой папке. Обратите внимание, что альтернативные файлы ресурсов должны быть названы точно так же, как файлы ресурсов по умолчанию (например, styles.xml или dimens.xml ).

Основные квалификаторы альтернативных ресурсов

Ориентация экрана

Квалификатор ориентации экрана имеет два возможных значения:

  • port: Устройство находится в портретном режиме (вертикальном). Так, res/layout-port/ будет содержать layout-файлы, которые будут использоваться, когда устройство находится в портретном режиме.
  • land: Устройство находится в альбомном режиме (горизонтальном). Соответственно, res/layout-land/ будет содержать layout-файлы, которые будут использоваться, когда устройство находится в альбомном режиме.

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

Чтобы создать layout для альбомной ориентации и больших дисплеев, используйте layout-редактор. Для этого следуйте указаниям ниже:

  1. Откройте XML-файл (например, activity_main.xml ) в Android Studio. Появится layout-редактор.
  2. Перейдите на вкладку Design в нижней части редактора макетов (если он еще не выбран).
  3. Нажмите на кнопку Orientation in Editor на верхней панели инструментов.
  4. Выберите параметр Create Landscape Variation.
  5. Для альбомной (горизонтальной) вариации откроется новое окно редактора с файлом land/activity_main.xml . Вы можете изменить этот layout для альбомной ориентации, не изменяя исходную портретную (вертикальной) ориентацию.
  6. Перейдите в каталог res > layout из панели Project > Android, и вы увидите, что Android Studio автоматически создала для вас вариант с именем activity_main.xml (land) для альбомной версии activity_main.xml .

Версия платформы

Квалификатор версии платформы определяет минимальный уровень API, поддерживаемый устройством. Например, используйте v11 для API уровня 11 (устройства на Android 3.0 или выше).

Для работы изображений WebP требуется уровень API 14 (Android 4.0) или выше, а для их полной поддержки требуется уровень API 17 (Android 4.2) или выше. Если вы используете изображения WebP:

  • Поместите версии изображений по умолчанию в папку res/drawable. Эти изображения должны быть формата, поддерживаемого всеми уровнями API, например PNG.
  • Поместите версии изображений в формате WebP в папку res/drawable-v17. Если устройство использует API уровня 17 или выше, Android выберет эти ресурсы во время запуска приложения.

Локализация

Квалификатор локализации указывает язык и регион (опционально), который используется в приложении. Данный квалификатор представляет собой двухбуквенный ISO 639-1 код языка, за которым (опять же, опционально) следует двухбуквенный код региона (перед ним будет находиться строчная буква r).

Вы можете указать только язык, но только регион указать нельзя. Примеры:

  • res/values-fr-rFR/strings.xml
    Строки в этом файле используются на устройствах с французским языком во Франции.
  • res/mipmap-fr-rCA/strings.xml
    Строки из этого файла будут используются на устройствах с французском языке, но уже в Канаде.
  • res/layout-ja/content_main.xml
    Этот layout будет использоваться на устройствах с японским языком.

Если пользователь меняет язык или регион в системных настройках устройства во время работы приложения и в приложении есть соответствующие альтернативные ресурсы, то Android автоматически перезагрузит приложение, используя альтернативные ресурсы, которые соответствуют новой конфигурации устройства.

Ресурсы по умолчанию

Ресурсы по умолчанию определяют дизайн и контент по умолчанию для вашего приложения. Например, когда приложение работает на устройстве с языком, для которого вы не указали специфичный для него текст, Android загрузит строки по умолчанию из файла res/values/strings.xml. Если файл по умолчанию отсутствует или в нём отсутствует хотя бы одна критичная для работы приложения строка, то приложение просто не запустится и выдаст ошибку.

Ресурсы по умолчанию имеют стандартные имена папок ресурсов (например, values) без квалификаторов в названии папки или скобок после названий файлов.

Совет: всегда предоставляйте ресурсы по умолчанию, поскольку очень вероятно, что ваше приложение будет работать с устройствами, конфигурации которых не были предусмотрены.

Источник

How to Create Landscape Layout in Android Studio?

In Android, whenever the user switches to landscape mode an issue is encountered in which some of the widgets become invisible (as you can see in the below image) and so in this scenario , there is a need to design a separate layout for the landscape mode. So i n android, every application is designed in almost both the orientations i.e Portrait and Landscape. But by default Android Studio gives the option to design the application in Portrait mode but for Landscape mode, we need to create a Landscape Layout folder under the res folder. As per Android developer website guidelines, the name of this folder should be “layout-land”.

We are going to discuss two methods to create a landscape layout in android studio.

Method 1:

Step 1: If the project is already opened in the “Android” mode then change the project to “Project” mode as shown in the below image.

Step 2: Go to app > src > main > res > right-click > New > Android Resource Directory and one pop up will be prompted as shown below. Select Resource type as layout then go to Orientation and then click on the >> icon.

Step 3: Now in the Screen orientation select Landscape and the directory name automatically change to layout-land and let the Directory name as layout-land and don’t change it .

Step 4: Go to the layout-land > right-click > New > XML > Layout XML File and name the file.

Step 5: Now cut the layout.xml file and paste it under the layout-land folder. Open the XML file and you will get the Landscape mode.

If you want to redesign the activity_main.xml in Landscape mode then copy the activity_main.xml file from the layout folder to the layout-land folder. Please refer to this article to Design the Landscape and Portrait Mode of Application in Android . Refer to the following video to get the whole steps:

Method 2

Method 2 is very easy to implement. In fact In Android Studio 3.x.x, there is no need to create an extra layout folder. There are only two steps to implement the method.

Step 1: Open the base UI layout in DESIGN mode so that you see the actual GUI, such as Buttons, icons, etc.

Step 2: Click the icon marked in the below screenshot and, from the menu, select Create Landscape Variation. Then the corresponding Landscape file will be created automatically named as land\xml file name.

Источник

Читайте также:  Space run для андроид
Оцените статью