Ресурсы Android и интернационализация

базовое руководство-программирование-Android-5

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

Основные ресурсы: изображения и тексты

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

Поэтому вставлять тексты в код не рекомендуется. Единственным исключением могут быть сообщения, не предназначенные для конечного пользователя, например сообщения вывода консоли. Но в целом все наши тексты должны быть отправлены в отдельный файл ресурсов. Мы назовем этот файл строки.xml, и ваш полный путь в проекте будет res / values ​​/ strings.xml.

Файл strings.xml будет иметь подобное содержимое:

<Ресурсы>string имя = "строка_1">текст 1
    <string имя = "строка_2">текст 2

Теперь в нашем коде мы можем получить эти тексты с помощью таких предложений, как getResources (). GetString (R.string.string_1), или внутри наших макетов, таких как @ string / string_1. Таким образом, мы достигли того, чего хотели: код стал независимым от ресурсов.

Другой ресурс, который мы будем использовать регулярно, будет изображение. Для этого у нас есть несколько папок в проекте, таких как res / drawable, res / drawable-hdpi, res / drawable-xhdpi и т.п.

Суффиксы, следующие за словом "drawable", относятся к плотность экрана. Каждое устройство Android имеет плотность пикселей на экране, которая сгруппирована в несколько групп:

  • ldpi (маленький, x0,75)
  • mdpi (среднее x1)
  • hdpi (большой x1,5)
  • xhdpi (очень большой x2)
  • xxhdpi (очень очень большой x3)

Таким образом, одно и то же изображение можно адаптировать к разная плотность экрана без появления деформаций. Рекомендуется, чтобы в каждой папке была копия изображения с соблюдением пропорций (принимая mdpi в качестве основы и равным 1), хотя вы также можете использовать только один из них, и тогда Android автоматически выполнит операцию масштабирования для другие разрешения. Тем не менее, рекомендуется закрыть все папки, чтобы избавить систему от лишних усилий.

Папка "drawable" не будет содержать изображений, мы будем использовать ее только для xml-определений расширенных элементов, таких как селекторы.

Otros recursos

В каталоге / res проекта может находиться гораздо больше ресурсов. Звуки, определения цветов, которые можно использовать аналогично текстам, размеры для нашего приложения, стили для наших представлений и многое другое.

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

Интернационализация на Android

С изображениями мы уже познакомились с альтернативная система ресурсов на Android: Если у нас есть экран с плотностью xhdpi (например, у Galaxy S3), Android предпочтет изображения в каталоге drawable-xhdpi другим.

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

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

  • res / values ​​(значения по умолчанию)
  • res / values-en
  • res / values-fr

То есть в папку добавляется суффикс с ISO-кодом конкретного языка, а тексты по умолчанию в папке мы оставим без суффикса. Последнее очень важно, потому что, за исключением плотности экрана, мы всегда должны указывать значение по умолчанию для всех ресурсов. Когда нам требуется какой-либо ресурс, Android будет искать тот, который лучше всего подходит, и, если он не найдет его, мы можем обнаружить неожиданное закрытие приложения. Вот почему всегда должен быть язык, который мы выбираем по умолчанию, и чтобы все ресурсы имели свое значение по умолчанию.

Таким образом, мы снова получаем то, что хотели: помимо отделения текстов от кода, теперь мы можем иметь приложение на разных языках вообще не касаясь нашего кода.

Система генерации альтернативных ресурсов, конечно, комбинируема. Перейдя по указанной ранее ссылке, мы увидим, в каком порядке должны идти суффиксы. Если мы последуем простому примеру, который мы указываем в этом руководстве, мы могли бы подумать о том, чтобы иметь изображения, которые предназначены только для английской версии. Это достигается созданием папки res / drawable-en-xhdpi или любой другой необходимой нам плотности экрана. Таким образом, мы можем предоставить широкий спектр ресурсов и не беспокоиться о выборе подходящего. Конечно: не забывая, что плотность экрана - единственный модификатор, для которого не нужны значения по умолчанию. Все остальные нуждаются в значениях по умолчанию, иначе мы рискуем вылететь из строя.


Вы заинтересованы в:
Как удалить вирусы на Android
Следуйте за нами в Новостях Google

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Блог Actualidad
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.