AIMP for Android v2.50 — Темы

Недавно стартовало публичное бета-тестирование новой версии AIMP для Android, я хотел бы разобрать вопрос создания собственных тем для плеера, поскольку редактора тем для мобильного AIMP еще в глубокой разработке — собирать тему придется вручную. Итак.

В первую очередь, хочу заметить, что тема — это частный случай скина, сильно урезанный по возможностям. В нашем случае, тема позволяет изменить внешний вид элементов и их положение в пределах окна, так же вы можете безболезненно создавать и удалять элементы, что не имеют имени — атрибута name.

В качестве примера я взял скин Pandemic из первой версии плеера. Давайте перенесем его на v2.50.

Структура скина

Скачиваем оригинальный скин Bliss_Dark, и открываем его как zip-архив в любом удобном вам архиваторе. Вот что мы видим внутри:

Structure of theme

На верхнем уровне расположены:

  • skin.png — карта текстур, в ней расположены абсолютно все текстуры, что используются в теме
  • skin.xml — содержит информацию о скине, а так же коллекцию общих цветов.

Следующий уровень — папка Views. В ней содержатся XML-файлы с описанием макета каждого конкретного экрана, вкладки, элементов и т.п. Обратите внимание на подпапки — phone, tablet, а так же подпапки внутри них. Как вы, наверное, догадались: эти папки содержат макеты для определенных типов устройств и ориентации экрана.
Как это работает? Рассмотрим пример: планшет в ландшафтном режиме, при загрузке экрана движок плеера сначала попробует загрузить нужный XML-файл из папки Views/Tablet/Landscape, если его там нет — загрузит из корня — из папки Views.

  • common.playlist.xml — макет экрана с плейлистом
  • common.playlist.group.xml — макет группы внутри плейлиста в обычном режиме
  • common.playlist.group.delete.xml — макет группы внутри плейлиста в режиме удаления
  • common.playlist.group.sort.xml — макет группы внутри плейлиста в режиме сортировки
  • common.playlist.item.xml — макет строки внутри плейлиста в обычном режиме
  • common.playlist.item.delete.xml — макет строки внутри плейлиста в режиме удаления
  • common.playlist.item.sort.xml — макет строки внутри плейлиста в режиме сортировки
  • dspmanager.xml — макет окна менеджера звуковых эффектов
  • dspmanager.basic.xml — макет вкладки «общее»
  • dspmanager.equalizer.xml — макет вкладки «эквалайзер»
  • filedialog.files.xml — макет окна добавления файлов
  • filedialog.files.item.xml — макет строки списка файлов
  • filedialog.files.item.checked.xml  — макет строки списка файлов с возможность отметить ее галочкой
  • filedialog.save.xml — макет окна сохранения файлов
  • fileinfo.xml — макет окна «информация о файле»
  • fileinfo.basic.xml — макет вкладки «общая информация о файле»
  • fileinfo.lyrics.xml — макет вкладки «стихи»
  • main.xml — макет главного окна программы
  • main.player.xml — макет главного экрана программы
  • navigator.xml — макет навигационного меню, что появляется с левой стороны экрана
  • navigator.command.xml — макет строки с командой
  • navigator.separator.xml — макет разделителя
  • navigator.tab.xml — макет строки с вкладкой плейлиста
  • navigator.tab.new.xml — макет строки с кнопкой «добавить новую вкладку»
  • sleeptimer.xml — макет окна таймера сна