1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/zlgopen-awtk

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
screen_saver.md 3.3 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 28.11.2024 22:52 91e8897

Как включить экранную заставку

Экранная заставка представляет собой обычное окно, которое периодически меняет различные изображения или динамически отображает некоторые фигуры для достижения эффекта защиты экрана.

1. Установка времени экранной заставки

Используйте функцию window_manager_set_screen_saver_time для установки времени экранной заставки.

/**
 * @method window_manager_set_screen_saver_time
 * 设置屏保时间。
 * @annotation ["scriptable"]
 * @param {widget_t*} widget 窗口管理器对象。
 * @param {uint32_t}  screen_saver_time 屏保时间(单位毫秒)。
 *
 * @return {ret_t} 返回 RET_OK 表示成功,否则表示失败。
 */
ret_t window_manager_set_screen_saver_time(widget_t* widget, uint32_t screen_saver_time);

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

window_manager_set_screen_saver_time(window_manager(), 180 * 1000);

2. Регистрация события и открытие окна экранной заставки

Пример:

static ret_t close_window_on_event(void* ctx, event_t* e) {
  window_close(WIDGET(ctx));

  return RET_REMOVE;
}

static ret_t on_screen_saver(void* ctx, event_t* e) {
  widget_t* win = NULL;
  const char* screen_saver_win = "image_animation";

  if (widget_child(window_manager(), screen_saver_win) != NULL) {
    log_debug("screen saver exist.\n");
    return RET_OK;
  }

  win = window_open(screen_saver_win);
  widget_on(win, EVT_POINTER_MOVE, close_window_on_event, win);
  widget_on(win, EVT_POINTER_UP, close_window_on_event, win);
  widget_on(win, EVT_KEY_UP, close_window_on_event, win);

  return RET_OK;
}

ret_t application_init() {
  tk_ext_widgets_init();

  /*enable screen saver*/
  window_manager_set_screen_saver_time(window_manager(), 180 * 1000);
  widget_on(window_manager(), EVT_SCREEN_SAVER, on_screen_saver, NULL);

  return show_preload_res_window();
}

Можно в XML установить свойство fullscreen для окна, чтобы окно экранной заставки перешло в полноэкранный режим.

3. Расширение использования

Иногда могут потребоваться следующие требования:

  • пользователь не взаимодействует с системой m секунд, вернуться к главному экрану;
  • пользователь не взаимодействует с системой n секунд, запустить экранную заставку;
  • пользователь не взаимодействует с системой k секунд, перейти в спящий режим.

где m < n < k

В этом случае можно установить более короткое время screen_saver_time (например, 5 секунд), и каждый раз при получении события экранной заставки обновлять время бездействия пользователя. На основе этого времени выполнять соответствующие действия.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/zlgopen-awtk.git
git@api.gitlife.ru:oschina-mirror/zlgopen-awtk.git
oschina-mirror
zlgopen-awtk
zlgopen-awtk
master