AWTK поддерживает несколько тем и позволяет переключаться между ними без перезагрузки.
В каталоге assets создаются подкаталоги для каждой темы, например, default и dark:
assets
├── dark
│ ├── inc
│ │ ├── data
│ │ ├── fonts
│ │ ├── images
│ │ ├── scripts
│ │ ├── strings
│ │ ├── styles
│ │ ├── ui
│ │ └── xml
│ └── raw
│ └── styles
└── default
├── inc
│ ├── data
│ ├── fonts
│ ├── images
│ ├── scripts
│ ├── strings
│ ├── styles
│ ├── ui
│ └── xml
└── raw
├── data
├── fonts
├── images
├── scripts
├── strings
├── styles
├── ui
└── xml
Если требуется поддержка многотемного переключения, можно изменить скрипт update_res.py следующим образом:
themes = ['default', 'dark']
def run():
for theme in themes:
print('========================='+theme+' begin =========================');
common.init(AWTK_ROOT, ASSETS_ROOT, theme, ASSET_C)
common.updateRes()
print('========================='+theme+' end =========================\n');
Используйте следующую функцию:
/**
* @method assets_manager_set_theme
* Устанавливает текущую тему.
*
* @param {assets_manager_t*} am asset manager объект.
* @param {const char*} theme тема.
*
* @return {ret_t} возвращает RET_OK в случае успеха, иначе — ошибку.
*/
ret_t assets_manager_set_theme(assets_manager_t* am, const char* theme);
Используйте следующую функцию:
/**
* @method widget_set_theme
* Задаёт имя темы для динамического переключения. Если имя совпадает с текущей темой, происходит полная перезагрузка ресурсов.
*
* > На данный момент поддерживается только на платформах с файловой системой.
*
* @annotation ["scriptable"]
* @param {widget_t*} widget объект виджета.
* @param {char*} name имя темы.
*
* @return {ret_t} возвращает RET_OK в случае успеха, иначе — ошибку.
*/
ret_t widget_set_theme(widget_t* widget, const char* name);
После переключения темы генерируется событие EVT_THEME_CHANGED:
/**
* @const EVT_THEME_CHANGED
* Изменение темы (event_t).
*/
EVT_THEME_CHANGED,
Если проект должен поддерживать различные размеры экрана, а разница между ними слишком велика для простого использования layout, то можно использовать описанный механизм для разделения ресурсов по темам. При переключении на соответствующую тему на разных экранах проблема адаптации будет решена.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )