如何启用屏保

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

一、设置屏保定时器时间

用函数window_manager_set_screen_saver_time设置屏保时间。

  1. /**
  2. * @method window_manager_set_screen_saver_time
  3. * 设置屏保时间。
  4. * @annotation ["scriptable"]
  5. * @param {widget_t*} widget 窗口管理器对象。
  6. * @param {uint32_t} screen_saver_time 屏保时间(单位毫秒)。
  7. *
  8. * @return {ret_t} 返回RET_OK表示成功,否则表示失败。
  9. */
  10. ret_t window_manager_set_screen_saver_time(widget_t* widget, uint32_t screen_saver_time);
  1. window_manager_set_screen_saver_time(window_manager(), 180 * 1000);

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

示例:

  1. static ret_t close_window_on_event(void* ctx, event_t* e) {
  2. window_close(WIDGET(ctx));
  3. return RET_REMOVE;
  4. }
  5. static ret_t on_screen_saver(void* ctx, event_t* e) {
  6. widget_t* win = NULL;
  7. const char* screen_saver_win = "image_animation";
  8. if (widget_child(window_manager(), screen_saver_win) != NULL) {
  9. log_debug("screen saver exist.\n");
  10. return RET_OK;
  11. }
  12. win = window_open(screen_saver_win);
  13. widget_on(win, EVT_POINTER_MOVE, close_window_on_event, win);
  14. widget_on(win, EVT_POINTER_UP, close_window_on_event, win);
  15. widget_on(win, EVT_KEY_UP, close_window_on_event, win);
  16. return RET_OK;
  17. }
  18. ret_t application_init() {
  19. tk_ext_widgets_init();
  20. /*enable screen saver*/
  21. window_manager_set_screen_saver_time(window_manager(), 180 * 1000);
  22. widget_on(window_manager(), EVT_SCREEN_SAVER, on_screen_saver, NULL);
  23. return show_preload_res_window();
  24. }

可以在XML设置window的fullscreen属性,让屏保窗口进入全屏状态。