Оформление, экраны, Layout и DashKits
HobDrive позволяет настраивать главный интерфейс на нескольких уровнях: от простых переключателей в приложении до собственных XML-экранов и полноценных DashKit-пакетов с графикой, темами и несколькими панелями.
Эта статья - обзор. Она помогает выбрать правильный способ настройки и понять, где находятся подробные инструкции. Полный справочник по тегам и атрибутам вынесен в спецификацию языка разметки HobDrive.
Что можно настраивать
В зависимости от задачи можно менять:
- порядок главных экранов;
- какие экраны доступны перелистыванием, а какие открываются только через меню Экраны;
- персональные параметры экранов, если они предусмотрены разметкой;
- набор датчиков на пользовательском экране Ваш экран;
- XML-разметку экранов через
user.layout; - внешний вид датчиков через
user.gaugeи атрибутыitem; - наборы экранов, изображений и тем через DashKits.
Если вы настраиваете HobDrive впервые, начните с интерфейсных настроек. XML и DashKits нужны тогда, когда обычных настроек уже не хватает.
Уровни настройки
1. Настройки главных экранов
Откройте Экраны -> Настройки -> Настройки главных экранов.
Через этот диалог можно:
- закреплять экраны в основной панели параметром Всегда показывать;
- убирать редкие экраны из перелистывания, оставляя их в меню Экраны;
- менять порядок экранов через Позиция экрана;
- включать персональные параметры некоторых экранов;
- собрать один пользовательский экран Ваш экран без ручного редактирования XML.
Подробно: Настройка главных экранов.
2. Пользовательский экран user1.layout
Раздел Ваш экран сохраняется в файл user1.layout. Обычно его не нужно редактировать вручную: приложение само создает XML, когда вы выбираете макет, датчики и дополнительные параметры ячеек.
Через Экспорт XML и Импорт XML можно сохранить, перенести или быстро обменяться пользовательским экраном.
user1.layout хорошо подходит для одного личного экрана: например “город”, “трасса”, “диагностика”, “температуры” или “гибрид”.
3. Ручной user.layout
Файл user.layout - продвинутый способ добавить свои секции и изменить существующие экраны. Он загружается из пользовательских настроек и не должен перетираться обновлениями приложения.
Через user.layout можно:
- добавить собственный экран через
<section>; - описать сетку датчиков через
<grid>; - показывать экран только при наличии нужных сенсоров через
if; - добавлять кнопки и действия;
- использовать вложенные сетки,
switch,union, декораторы и изображения; - делать экраны под конкретный ЭБУ, профиль или ориентацию устройства.
Минимальный пример:
<ui>
<section name="My Screen" fixed="true">
<grid rows="25,,30" cols="30,,30">
<item id="FuelLevel" precision="1"/>
<item id="FuelEconomy_trip" size="large"/>
<item id="BatteryVoltage" size="medium" period="5000"/>
<item id="RPM"/>
<item id="Speed" size="giant"/>
<item id="CoolantTemp"/>
<item id="IntakeAirTemp"/>
<item id="DistanceRun"/>
<item id="DateTime" custom-units="timesec" units="none"/>
</grid>
</section>
</ui>
Подробности по синтаксису: спецификация Layout.
4. user.gauge и оформление датчиков
layout описывает, какие элементы находятся на экране и где они расположены. gauge-настройки описывают, как эти элементы выглядят: размеры, цвета, рамки, графики, декораторы, картинки и наследуемые стили.
Важно: user.gauge может изменяться самим HobDrive. Приложение записывает туда настройки из диалога настройки вида сенсора, который открывается через долгое нажатие на датчик. Поэтому ручное редактирование user.gauge возможно, но делать его нужно осторожно: изменения из интерфейса и ручные правки должны не конфликтовать друг с другом.
На практике часто используется связка:
- в
user.layoutэлемент получаетinherit="_SomeStyle"; - в
user.gaugeили локальномgaugeопределяется набор визуальных атрибутов; - конкретный
itemпри необходимости переопределяет отдельные атрибуты.
Для простых изменений обычно достаточно атрибутов прямо в item: size, precision, period, units, description, inherit, colspan, rowspan.
Подробно про настройку вида датчика через интерфейс: Настройка главных экранов.
5. DashKits
DashKit - это пакет с готовыми панелями, экранами, изображениями и метаданными. DashKits позволяют распространять не один файл настроек, а целый набор оформления: например цифровую панель, аналоговую приборку, тему или набор диагностических экранов.
Официальный репозиторий: hobdrive/hobdrive-dashkits.
Шаблон для создания своего репозитория: hobdrive/template-dashkits.
В приложении DashKits открываются через Настройки -> Настройки Дэш Панелей. В диалоге есть:
- Установленные дэш панели - уже загруженные пакеты;
- Доступные дэш панели - пакеты из выбранного GitHub-репозитория;
- Настройки источника - поля
RepoиBranch, напримерhobdrive/hobdrive-dashkitsиmain; - действия Установить, Обновить, Удалить, Предпросмотр.
По умолчанию HobDrive смотрит в hobdrive/hobdrive-dashkits, ветка main. Можно указать свой репозиторий в формате owner/repo, если вы делаете собственные панели.
Как устроен DashKit
Типичный DashKit лежит в отдельной папке и содержит:
my-dashkit/
info.json
user.layout
images/
README.md
info.json описывает пакет:
{
"name": "My DashKit",
"version": "1.0.0",
"description": "Custom dashboard for HobDrive",
"author": "Your Name"
}
user.layout содержит обычную XML-разметку HobDrive. images/ хранит картинки, SVG и другие ресурсы, на которые ссылаются элементы макета.
При установке HobDrive скачивает папку DashKit из GitHub и кладет ее в пользовательские настройки как отдельную override-* директорию. Благодаря этому несколько пакетов могут сосуществовать, обновляться и удаляться отдельно.
Что выбрать
- Нужно просто поменять порядок и видимость экранов: используйте Настройки главных экранов.
- Нужно собрать один экран из нужных датчиков: используйте Ваш экран.
- Нужно добавить пару своих XML-экранов: используйте
user.layout. - Нужно сделать полноценную панель с графикой, темой, несколькими экранами и распространением через GitHub: делайте DashKit.
- Нужно понять точный синтаксис тегов и атрибутов: переходите в LAYOUT_SPEC_RU.md.
Практические советы
- Не редактируйте стандартные
default-*.layoutиdefault.gauge: при обновлении приложения они могут быть заменены. - Храните свои изменения в
user.layout,user.gauge,user1.layoutили DashKit. - Перед экспериментами сделайте бэкап настроек: Как перенести настройки или сделать бэкап.
- Для условий используйте
if, чтобы экран появлялся только когда нужные сенсоры доступны. - Для плотных диагностических экранов проверяйте читаемость на реальном устройстве.
- Сложные изменения интерфейса тестируйте на стоянке, а не во время движения.
