Fastest button press and release, disable all animation effects


I like to make the button press release as fast as possible. I like to disable all animation in LVGL v8.

What MCU/Processor/Board and compiler are you using?

Atmel ARM Cortex M7 on a custom PCB

What LVGL version are you using?


What do you want to achieve?

Make the buttons as fast as possible.

What have you tried so far?

In LVGL 8, the lv_conf.h file does not have anymore this define:

Does LVGL 8 have some new kind of define to stop all the animations?

This is what I did to eliminate the animations: I took the styling buttons example at and took out all the styling that has anything to do with effects. In the codeblocks simulator, the engage and release of the button are real fast. On my embedded platform with SPI screen, the press makes the color of the button change fast. When I let go, it seems to take more time for the button to change back to its initial color. Is there a timer that holds down the button after the user lets go in the LVGL engine?

I don’t have the periodic call to lv_tick_inc(timeElapsed) done in the best way possible. I used to have a 1kHz hardware timer call an interrupt handler. The problem is that when I tried do debugging with the emulator, I can’t single step code line by line. Instead of the interrupt handler, I do this:

   while (1)     {

I care about the button speed in a numerical keypad that I made with several extra commands next to the numbers. I like the user to be able to tap the buttons without thinking about going slowly. Sometimes if I type on many buttons too fast, one digit doesn’t get processed.

I have the below code for a button test. Is there any improvement possible to it?

Code to reproduce

void lv_example_btn_2(void)
    /*Init the style for the default state*/
    static lv_style_t styleButtonInitial;

    lv_style_set_radius(&styleButtonInitial, 3);

    lv_style_set_bg_opa(&styleButtonInitial, LV_OPA_100);
    lv_style_set_bg_color(&styleButtonInitial, lv_palette_main(LV_PALETTE_BLUE));

    /*Init the pressed style*/
    static lv_style_t styleButtonPressed;

    /*Ad a large outline when pressed*/
    lv_style_set_bg_color(&styleButtonPressed, lv_palette_darken(LV_PALETTE_RED, 4));

    lv_obj_t * btn1 = lv_btn_create(lv_scr_act());
    lv_obj_remove_style_all(btn1);                          /*Remove the style coming from the theme*/
    lv_obj_add_style(btn1, &styleButtonInitial, 0);
    lv_obj_add_style(btn1, &styleButtonPressed, LV_STATE_PRESSED);

    lv_obj_set_size(btn1, LV_SIZE_CONTENT, LV_SIZE_CONTENT);

    lv_obj_t * label = lv_label_create(btn1);
    lv_label_set_text(label, "Button");

Screenshot and/or video

If possible, add screenshots and/or videos about the current state.