awtk/docs/screen_saver.md
2019-02-21 18:00:15 +08:00

1.5 KiB
Raw Blame History

如何启用屏保

屏保是一个普通窗口,定时切换不同的图片或者动态绘制一些图形,以到达保护屏幕的效果。

一、设置屏保定时器时间

用函数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);

二、注册事件并打开屏保窗口

示例:

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) {
  /*please change image_animation to your own window name*/
  widget_t* win = window_open("image_animation");

  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();
}