вCoding

Пишем загрузчик UI из XML для LibGDX (часть 2)

Всем огромный привет! Сегодня мы продолжим разработку загрузчика слоя UI из XML.

В ходе моей разработки я переименовал название классов, теперь они начинаются со слова Nata (в честь моей жены 🙂 ).

Все вместе я назвал NataLib и в него входит класс для работы с локализацией, загрузчик UI и парочка классов UI объектов которых нет в базовом наборе LibGDX.

Проект NataLib на GitHub: https://github.com/Legion21/NataLib.git

[yasr_overall_rating size=»large»]

Класс для локализации (NataLocalization)

Начнем с класса для локализации, так как он используется в закричите UI.

Исходный код можно посмотреть на GitHub, а я расскажу как же можно его использовать.

Для начала нужно переделать конструктор нашего игрового класса (Game или ApplicationAdapter) следующим образом:

А так же переделаем класс DesktopLauncher чтобы передавать имя локализации системы:

Теперь можно приступить к загрузки локализации из XML файла, но для начала приведу пример, как же должен выглядеть файл локализации:

Загружаем этот файл в NataLocalization:

Загрузчик UI из XML (NataUiLoader)

Так же, как и в случаем с классом NataLocalization, исходный код можно почитать (и исправить/доделать/добавить что-то новое) на GitHub. 

Рассмотрим его использование

  1. Перед загрузкой  UI слоев необходимо загрузить файл локализации (если необходимо локализировать данные UI слоя);
  2. Создаем объект класса Skin (читаем первую часть статьи);
  3. Создаем объект класса NataUiLoader (передаем skin в конструкторе);
  4. Подготавливаем XML файл UI разметки;
  5. Загружаем UI разметку в объект класса Group (и радуемся)

Пример XML UI слоя:

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

Описание элементов UI происходит в теле тега items

Каждый элемент UI имеет следующие базовые параметры:

  • Имя элемента, name (по умолчанию name=»ui_item» если параметр не задан);
  • Позиция элемента в слое, x и y (по умолчанию x=0, y=0);
  • Размер элемента, width и height (по умолчанию width=0, height=0);
  • Центральная точка элемента (влияет на масштабирование и вращение), origin или origin_x, origin_y (по умолчанию равна центру элемента, width/2 и height/2);
  • Угол поворота элемента по часовой стрелке, angle (по умолчанию равен 0);
  • Масштабирование элемента, scale_x и scale_y (по умолчанию равны 1).

Специфические параметры я пока описывать не буду, их можно посмотреть в исходном коде класса на GitHub. Отмечу только параметр style_name который соответсвует имени стилю описанному в файле конфигурации Skin (skin.json).

Пример использования  класса NataUiLoader:

На этом моя статья заканчивается, пишите комменты, пробуйте использовать наши классы NataUiLoader и NataLocalization.

P.S. В процессе развития классов загрузчика и локализации буду обновлять данную статью  🙂 

Похожие посты

Добавить комментарий