Controlling usage of two loaded screens simultaneously

What do you want to achieve?

To update and to monitor two overlapped screens on the display

What have you tried so far?

I am displaying a small pop-off screen on the lower border of my main display, which shows a setup button, this small screen portion is overlapping the mains screen loaded previously. The background color of the setup screen is set to FFFFFF, Alpha = 0, so that is becomes transparent and the content of the main screen is still visible. How can I achieve that the main screen is still updated while the small setup screen is waiting for a button press simultaneously (or in sequence)?

Screenshot or video


  • SquareLine Studio version:
  • Operating system:
  • Target hardware:

We couldn’t get exactly what you mean above by ‘screen’ because LVGL ‘screens’ normally can’t be loaded simultaneously on a display (except special lv_layer_top and lv_layer_sys screens.)
Could you please send a screenshot or more detailed description with correct identification of the widget-type of your ‘setup’ screen? The we’ll probably understand what you mean by ‘updating’ the ‘main’ screen.

Hello Mihaly,

many thanks for your reply, I have created a full screen (lets call it 1st screen) with elements and I am overlapping this screen by changing to a second screen, which consist only of a small panel with elements on the lower half of the screen, the background is set Alpha = 150, so that the previous screen is still visible under the current screen, but the output to the first screen is stopped because the second screen has become active. But I would like to have an option to manipulate the output to both screens in sequence.

Forget this, and try your idea in squareline.
How func you call to change screen. Normal is irelevant how aplha you set previous screen must clear.

Maybe try modifying the advanced opacity handling setting ‘LV_COLOR_SCREEN_TRANSP’ in lv_conf.h. The mixing/alpha-blending routine is different with this setting, and enabling it requires 32bit color depth as the comments beside the setting say. (There are some explanation-comments in lv_conf_template.h too.)

This is not a matter of opacity (this is already working), it is a matter of getting two screens to work subsequently/alternating. So merely a matter of tasks.

Maybe if you send an example project or screenshot we can understand better what you mean by ‘in sequence’ and ‘updated’. (If you want ‘multitasking’, LVGL-8 doesn’t use tasks but does all tasks in the main loop cyclically.)