在上一講我們講解了按鍵回調函數的自定義函數的用法,這一講繼續講解回調函數的另一種用法。
首先我們將上一講做好的按鍵名稱以及自定義回調事件中的按鍵名稱修改,改為默認模式為“open”當點擊按鍵時進入回調函數將按鍵名稱改為“close”,具體如下圖所示:
然后按照上一講的講解找到自定義函數,將opoen修改為close,具體如下圖所示:
然后在左側的工具欄中選擇led控件,添加到按鍵的正上方放大,并且修改默認顏色為黑色。
右鍵按鍵控件選擇事件添加,在事件添加中點擊clicked信號右側的加號添加需要綁定的事件。
在觸發事件中選擇需要做出回應的對象,這里我們點擊led_1控件,點擊確認。
點擊clicked信號右上角的if按鍵,在彈出的彈窗中點擊加號,在if右側的條件欄填寫“flag_btnflase”,點擊確認。Flag_btn在上一講代碼中用來判斷按鍵的狀態,false表示當前已經按下,true表示當前按鍵未被按下。
然后點擊led_1左側的加號,添加觸發的條件限制“flag_btnfalse”,在右側加號中選擇改控件要做出的反應,在這里我們選擇色彩修改為黃色,模擬當按鍵按下后燈泡亮起。
最后我們根據之前的操作,為else條件添加led_1控件變黑的動作。
到此為止,模擬按鍵打開燈泡的demo就做好了,以下是回調事件中的代碼:
static void screen_btn_1_event_handler (lv_event_t *e)
{
lv_event_code_t code = lv_event_get_code(e);
switch (code) {
case LV_EVENT_CLICKED:
{
//控制按鍵字體的變化
btn_clicked();
if (flag_btn==false) {
//改變led_1為黃色
lv_led_set_color(guider_ui.screen_led_1, lv_color_hex(0xeff316));
} else {
//改變led_1為黑色
lv_led_set_color(guider_ui.screen_led_1, lv_color_hex(0x000000));
}
break;
}
default:
break;
}
}
以下是led控件的相關函數:
//基于父控件創建led_1控件
ui->screen_led_1 = lv_led_create(ui->screen);
//控制led_1的亮度,亮度范圍為0~255
lv_led_set_brightness(ui->screen_led_1, 255);
//設置led_1的顏色為黑色
lv_led_set_color(ui->screen_led_1, lv_color_hex(0x000000));
//設置led_1的位置及其大小
lv_obj_set_pos(ui->screen_led_1, 128, 100);
lv_obj_set_size(ui->screen_led_1, 214, 220);
以下是led相關函數,具體使用請查看適合版本的官方手冊。
? lv_led_create: 創建 LED 控件。
? lv_led_set_on: 設置 LED 是否點亮。
? lv_led_set_color: 設置 LED 的顏色。
? lv_led_set_brightness: 設置 LED 的亮度。
? lv_led_get_color: 獲取 LED 的顏色。
? lv_led_get_brightness: 獲取 LED 的亮度。
? lv_led_set_style: 設置 LED 的樣式。
下一期我們將講其他控件的基礎使用。
第五講視頻
本文章由威三學社出品
對課程感興趣可以私信聯系