国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

簡析LVGL基礎知識之對象模塊

電子工程師 ? 來源:極客筆記 ? 作者:極客筆記 ? 2021-06-11 10:47 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

概述

LVGL 中,用戶界面的基本構建塊是對象,也稱為小部件(widget)。本文主要是介紹LVGL的對象模塊。

LVGL基礎知識之對象

對象(Objects)

在 LVGL 中,用戶界面的基本構建塊是對象,也稱為小部件(widget)。例如,按鈕,標簽,圖像,列表,圖表或文本區域。

查看 LVGL所有的對象類型(widget) 。

對象的屬性(Attributes)

對象的基本屬性

所有對象類型都共享一些基本屬性:

Position (位置)

Size (尺寸)

Parent (父母)

Drag enable (拖動啟用)

Click enable (單擊啟用)

position (位置)

等等

我們可以使用 lv_obj_set _.。。 和 lv_obj_get _.。。 等前綴的函數設置或者獲取這些屬性。例如:

/* 設置基礎對象的屬性 */

lv_obj_set_size(btn1, 100, 50); /* 設置按鍵的大小 */

lv_obj_set_pos(btn1, 20,30); /* 設置按鍵的位置 */

對象的特殊屬性

有些對象類型也具有特殊的屬性。例如,滑塊具有

Min. max. values (最小最大值)

Current value (當前值)

Custom styles (自定義樣式)

對于這些屬性,每種對象類型都有唯一的 API 函數。例如一個滑塊的 API 調用過程:

/* 設置滑塊的特殊屬性 */

lv_slider_set_range(slider1, 0, 100); /* 設置滑塊的最小值和最大值 */

lv_slider_set_value(slider1, 40, LV_ANIM_ON); /* 設置當前值(屏幕坐標系位置) */

lv_slider_set_action(slider1, my_action); /* 設置回調函數 */

要查看 API 的實現代碼,可以檢查相應的頭文件(例如滑塊對象的頭文件 lv_objx/lv_slider.h)

對象的工作機制

親子結構

父對象可以作為其子對象的容器。每個對象只能一個父對象(屏幕除外),但是一個父對象可以有無限多個子對象。父對象的類型沒有限制,但是有特殊的父對象(例如,按鈕)和特殊的子對象(例如,標簽)。

追隨原則

如果更改了父對象的位置,則子對象將與父對象一起移動,并且子對象的位置都保持相對于父對象位置不變。例如,坐標 (0,0) 表示子對象將獨立于父對象的位置保留在父對象的左上角,代碼:

pYYBAGDC0LqAJMlDAAATv2dZDjk853.jpg

一個父子對象

lv_obj_t * par = lv_obj_create(lv_scr_act(), NULL); /* 在當前屏幕中創建一個對象 */

lv_obj_set_size(par, 100, 80); /* 設置對象的大小 */

lv_obj_t * obj1 = lv_obj_create(par, NULL); /* 基于前面創建的對象(par)創建一個子對象(obj1),之前的對像成為父對象 */

lv_obj_set_pos(obj1, 10, 10); /* 設置子對象的位置 */

當我們修改父對象的位置,子對象也會一起移動,以保持和父對象的相對位置不變:

poYBAGDC0MCAcbFjAAAMTOzFifo552.jpg

子對象跟隨父對象

lv_obj_set_pos(par, 50, 50); /* 移動父對象,子對象也會跟著移動,以保持相對位置不變 */

子對象僅在父對象的范圍內可見

如果子對象的部分或全部不在其父級之內,則超出父對象的部分將不可見。

子對象超出父對象的部分不可見

pYYBAGDC0MaAOYs_AAAWYb5vagQ224.jpg

lv_obj_set_x(obj1, -30); /* 將子對象移出一部分到從父對象的范圍內之外 */

創建-刪除對象

在LVGL中,可以在運行時動態地創建和刪除對象。這意味著僅當前創建的對象需要消耗RAM。例如,如果需要圖表,我們可以在需要時創建它,并在不可見或不需要時將其刪除。

每個對象類型都有各自的創建函數。它需要兩個參數:

指向父對象的指針。創建屏幕時以 NULL 作為父級。

用于復制具有相同類型的對象的指針(可選)。如果不行進行復制操作為 NULL。

使用 lv_obj_t 指針作為句柄在 C 代碼中引用所有對象。以后可以使用該指針設置或獲取對象的屬性。

創建函數如下所示:

lv_obj_t * lv_ 《type》_create(lv_obj_t * parent, lv_obj_t * copy);

所有對象類型都有一個通用的刪除功能。它刪除對象及其所有子對象。

void lv_obj_del(lv_obj_t * obj);

lv_obj_del 將立即刪除該對象。如果出于某種原因不能立即刪除該對象,則可以使用 lv_obj_del_async(obj) ,例如,如果要刪除子對象的 LV_EVENT_DELETE 信號中對象的父對象,這很有用。

我們可以使用 lv_obj_clean 刪除對象的所有子對象(但不會刪除對象本身):

void lv_obj_clean(lv_obj_t * obj);

屏幕對象

創建屏幕對象

屏幕是沒有父對象的特殊對象。應該像這樣創建它們:

lv_obj_t * scr1 = lv_obj_create(NULL, NULL);

可以使用任何對象類型創建屏幕。例如:創建墻紙的基礎對象或圖像。

獲取活動屏幕

這始終是每個顯示屏上的活動屏幕。默認情況下,該庫為每個顯示創建并加載 “基礎對象” 作為屏幕。

要獲取當前活動的屏幕使用函數 lv_scr_act()

載入屏幕

調用函數 lv_scr_load(scr1) 加載屏幕。

加載屏幕動畫

我們可以調用函數:lv_scr_load_anim(scr, transition_type, time, delay, auto_del) 加載屏幕動畫。參數 transition_type 是動畫過渡類型,該參數可設為:

LV_SCR_LOAD_ANIM_NONE 延遲x毫秒后立即切換

LV_SCR_LOAD_ANIM_OVER_LEFT/RIGHT/TOP/BOTTOM 將新屏幕移到給定方向上

LV_SCR_LOAD_ANIM_MOVE_LEFT/RIGHT/TOP/BOTTOM 將舊屏幕和新屏幕都移至給定方向

LV_SCR_LOAD_ANIM_FADE_ON 使新屏幕淡出舊屏幕

將 auto_del 設置為 true 會在動畫結束時自動刪除舊屏幕。

在延遲時間之后開始動畫播放時,新屏幕將變為活動狀態(由 lv_scr_act() 返回)。

處理多個顯示

屏幕在當前選擇的默認屏幕上創建。默認顯示設備使用 lv_disp_drv_register 注冊的最后一個屏幕作為顯示,或者可以使用 lv_disp_set_default(disp) 顯式選擇新的默認顯示屏幕。

lv_scr_act() , lv_scr_load() 和 lv_scr_load_anim() 將會在默認的屏幕上操作。

零件-Parts

widget 可以包含多個 Parts 。例如,按鈕僅具有主要部分,而滑塊則由背景,指示器和旋鈕組成。

Parts 名稱的構造類似于 LV_ + 《TYPE》 _PART_ 《NAME》 。比如 LV_BTN_PART_MAIN 、 LV_SLIDER_PART_KNOB 。通常在將樣式添加到對象時使用 Parts。使用 Parts 可以將不同的樣式分配給對象的不同 Parts 。

狀態-States

對象可以處于以下狀態的組合:

LV_STATE_DEFAULT 默認或正常狀態

LV_STATE_CHECKED 選中或點擊

LV_STATE_FOCUSED 通過鍵盤或編碼器聚焦或通過觸摸板/鼠標單擊

LV_STATE_EDITED 由編碼器編輯

LV_STATE_HOVERED 鼠標懸停(現在還不支持)

LV_STATE_PRESSED 按下

LV_STATE_DISABLED 禁用或無效

當用戶按下,釋放,聚焦等對象時,狀態通常由庫自動檢測更改。當然狀態也可以手動檢測更改。要完全覆蓋當前狀態,調用 lv_obj_set_state(obj, part, LV_STATE.。。) 要設置或清除某個狀態(但不更改其他狀態),調用 lv_obj_add/clear_state(obj, part, LV_STATE_.。。) 可以組合使用狀態值。例如: lv_obj_set_state(obj, part, LV_STATE_PRESSED | LV_PRESSED_CHECKED) 。

以上就關于在 LVGL 中,用戶界面的基本構建塊之對象的介紹。

責任編輯:lq6

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 對象模
    +關注

    關注

    0

    文章

    1

    瀏覽量

    6140
  • LVGL
    +關注

    關注

    2

    文章

    124

    瀏覽量

    4555

原文標題:LVGL基礎知識(一)

文章出處:【微信號:gh_ed4f95bde4df,微信公眾號:華芯微特32位MCU】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    惠州雷曼入選國家知識產權示范企業創建對象

    近日,國家知識產權局正式公布了2025-2027年度國家知識產權強國建設示范創建對象名單。雷曼光電全資子公司——惠州雷曼,憑借其在知識產權創造、運用、保護和管理方面的體系化優勢,成功入
    的頭像 發表于 03-03 16:36 ?720次閱讀

    鴻利智匯成功入選國家知識產權示范企業創建對象

    近日,國家知識產權局公示了2025—2027年知識產權強國建設示范創建對象名單,鴻利智匯集團股份有限公司入選“國家知識產權示范企業創建對象
    的頭像 發表于 02-09 14:13 ?422次閱讀

    阻燃系列基礎知識

    我很榮幸有機會在這里與大家分享我對阻燃系列基礎知識的研究。今天,我們將探討的主題是“阻燃系列基礎知識”。在我們日常生活中,火災事故頻發,造成巨大的財產損失和人員傷亡。因此,了解阻燃材料的基礎知識對于
    的頭像 發表于 02-06 08:07 ?265次閱讀
    阻燃系列<b class='flag-5'>基礎知識</b>

    羅萊迪思入選國家知識產權示范企業創建對象

    近日,國家知識產權局正式公示了2025—2027年知識產權強國建設示范創建對象評審結果,杭州數智光科技“小龍”羅萊迪思憑借在知識產權領域的深厚積淀與實力成功入選國家
    的頭像 發表于 01-27 16:06 ?740次閱讀
    羅萊迪思入選國家<b class='flag-5'>知識</b>產權示范企業創建<b class='flag-5'>對象</b>

    芯原入選國家知識產權示范企業創建對象

    1月12日,國家知識產權局公示了“2025-2027年國家知識產權強國建設示范創建對象”的評審結果,芯原微電子 (上海) 股份有限公司憑借其在知識產權創造、運用、管理和保護方面的扎實基
    的頭像 發表于 01-27 15:28 ?208次閱讀

    度亙核芯成功入選“國家知識產權示范企業創建對象

    近日,國家知識產權局正式公布2025-2027年新一批知識產權強國建設示范企業創建對象名單,度亙憑借在知識產權創造、運用、保護、管理全鏈條的卓越表現成功入選。這一國家級榮譽的加持,既是
    的頭像 發表于 01-21 17:31 ?1277次閱讀
    度亙核芯成功入選“國家<b class='flag-5'>知識</b>產權示范企業創建<b class='flag-5'>對象</b>”

    無刷電機驅動器的基礎知識

    本文將從技術角度出發,對三相無刷電機的電機驅動器的作用、種類和規格進行介紹。通過本文,您可以學習到電機驅動器選型所需的基礎知識
    的頭像 發表于 12-10 14:13 ?6678次閱讀
    無刷電機驅動器的<b class='flag-5'>基礎知識</b>

    RK?平臺?Vendor Storage?開發指南:基礎知識、流程與實用技巧

    備可靠性校驗、掉電恢復等關鍵特性,是保障設備身份標識、功能授權等核心信息安全的重要組件。本文將從基礎知識、開發流程、使用途徑三方面,為開發者梳理完整的開發邏輯。 一、核心基礎知識:了解?Vendor Storage?是什么? 1.?核心定位與核心特性 Vendor Sto
    的頭像 發表于 11-22 07:11 ?648次閱讀
    RK?平臺?Vendor Storage?開發指南:<b class='flag-5'>基礎知識</b>、流程與實用技巧

    `lv_obj_tree.h` 在 **LVGL v9** 中的位置和作用

    /core/lv_obj_tree.h 核心作用 這個文件是 LVGL 核心模塊的一部分,主要負責 UI 對象樹的管理,包括: 對象的父子關系維護(添加、刪除子
    發表于 11-13 15:49

    視覺工程師必須知道的工業相機基礎知識

    工業相機基礎知識概述。
    的頭像 發表于 09-19 17:04 ?1268次閱讀
    視覺工程師必須知道的工業相機<b class='flag-5'>基礎知識</b>

    Modbus與MQTT的區別

    Modbus和MQTT是工業領域中兩種不同的通信協議,在設計目標、應用場景、通信模式等方面存在顯著差異,以下從多個維度兩者的區別: 1.設計目標與起源 Modbus 誕生于1979年,由施耐德
    的頭像 發表于 07-10 14:10 ?988次閱讀

    從“代碼迷宮”到“視覺藍圖”——LVGL的嵌入式UI設計哲學!

    傳統嵌入式UI開發常陷入“邏輯與美感的博弈”,LVGL則重構這一邏輯。其基于事件驅動的架構將界面元素解耦為獨立對象,開發者可通過狀態機模型定義交互行為。更驚艷的是,LVGL支持導入設計師輸出的SVG
    的頭像 發表于 05-12 16:33 ?1253次閱讀
    從“代碼迷宮”到“視覺藍圖”——<b class='flag-5'>LVGL</b>的嵌入式UI設計哲學!

    效果器的基礎知識

    電子發燒友網站提供《效果器的基礎知識.doc》資料免費下載
    發表于 03-26 14:30 ?7次下載

    開關電源的基礎知識題目及答案(免積分)

    本文含有開關電源的基礎知識題目及答案,下載附件即可查看!
    發表于 03-06 15:52

    【北京迅為】iTOP-RK3568OpenHarmony系統南向驅動開發GPIO基礎知識

    【北京迅為】iTOP-RK3568OpenHarmony系統南向驅動開發GPIO基礎知識
    的頭像 發表于 03-06 11:23 ?1252次閱讀
    【北京迅為】iTOP-RK3568OpenHarmony系統南向驅動開發GPIO<b class='flag-5'>基礎知識</b>