Skip to content

Кнопки меню навигации

Система навигационных кнопок обеспечивает быстрый доступ к основным разделам интерфейса дисплея. Меню располагается в нижней части экрана и содержит 4 основные кнопки.

Обзор системы меню

Основные функции:

  • Навигация между страницами интерфейса
  • Визуальная индикация активной страницы
  • Плавные анимации переходов

Структура меню:

КнопкаИконкаСтраницаНазначение
Home${home_icon}home_pageГлавная страница
Lights${ceiling_icon}lights_group_pageУправление освещением
Devices${devices_icon}devices_pageУстройства
Settings${settings_icon}settings_pageНастройки устройства

Структура контейнера меню

Основной контейнер

yaml
- obj:
    id: menu_controls_main
    x: 0
    y: -20
    width: 440
    height: 80
    pad_all: 10
    align: BOTTOM_MID
    bg_color: color_steel_blue
    bg_opa: 20%
    radius: 10
    layout:
      type: FLEX
      flex_align_main: SPACE_AROUND
      flex_align_cross: CENTER

Характеристики контейнера:

  • Позиция: Внизу экрана с отступом 20px
  • Размер: 440x80 пикселей
  • Фон: Полупрозрачный color_steel_blue (20% прозрачности)
  • Макет: Flex с равномерным распределением кнопок
  • Отступы: 10px со всех сторон
  • Радиус: 10px для скругленных углов

Структура кнопок

Кнопка "Главная" (Home)

yaml
- button:
    id: home_page_btn
    clickable: true
    width: 60
    height: 60
    radius: 10
    bg_color: color_slate_blue_gray
    shadow_opa: TRANSP
    widgets:
      - label:
          align: CENTER
          text_color: color_steel_blue
          text_font: icons_36
          text: "${home_icon}"

Особенности:

  • Размер: 60x60 пикселей (квадратная)
  • Фон по умолчанию: color_slate_blue_gray (активная)
  • Иконка: Центрированная, размер шрифта 36px
  • Цвет иконки: color_steel_blue

Кнопка "Освещение" (Lights)

yaml
- button:
    id: lights_group_page_btn
    bg_opa: TRANSP  # Изначально прозрачная
    widgets:
      - label:
          text: "${ceiling_icon}"

Отличия:

  • Фон: Изначально прозрачный (TRANSP)
  • Иконка: Символ потолочного освещения
  • Активация: При нажатии получает фон

Кнопка "Устройства" (Devices)

yaml
- button:
    id: devices_page_btn
    widgets:
      - label:
          text: "${devices_icon}"

Кнопка "Настройки" (Settings)

yaml
- button:
    id: settings_page_btn
    widgets:
      - label:
          text: "${settings_icon}"

Логика навигации

Механизм переключения

Каждая кнопка выполняет следующие действия при нажатии:

1️⃣ Переход на страницу

yaml
on_press:
  - lvgl.page.show: 
      id: home_page
      animation: OUT_RIGHT
      time: 300ms
  • Анимация: OUT_RIGHT (выезд справа)
  • Время: 300 миллисекунд
  • Плавность: Встроенные LVGL переходы

2️⃣ Активация текущей кнопки

yaml
- lvgl.button.update:
    id: home_page_btn
    bg_color: color_slate_blue_gray
    bg_opa: 100%
  • Фон: Устанавливается color_slate_blue_gray
  • Прозрачность: 100% (полностью непрозрачный)
  • Визуальный эффект: Кнопка становится выделенной

3️⃣ Деактивация остальных кнопок

yaml
- lvgl.button.update:
    id: lights_group_page_btn
    bg_opa: TRANSP
- lvgl.button.update:
    id: devices_page_btn
    bg_opa: TRANSP
- lvgl.button.update:
    id: settings_page_btn
    bg_opa: TRANSP
  • Эффект: Все неактивные кнопки становятся прозрачными
  • Результат: Четкое выделение активной страницы

Система стилизации

Цветовая схема

ЭлементЦветСостояниеОписание
Контейнерcolor_steel_blue20% прозрачностьФон панели меню
Активная кнопкаcolor_slate_blue_gray100% непрозрачностьВыделение текущей страницы
Неактивная кнопка-ПрозрачныйСкрытый фон
Иконкиcolor_steel_blue100% непрозрачностьВсе иконки одинакового цвета