精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

由淺入深學(xué)習(xí)新模塊之Window_manager(二)

系統(tǒng) OpenHarmony
本文開始介紹OpenHarmony的Window_manager的具體實現(xiàn)相關(guān)。

??想了解更多關(guān)于開源的內(nèi)容,請訪問:??

??51CTO 開源基礎(chǔ)軟件社區(qū)??

??https://ost.51cto.com??

前言:

在??上一篇??文章中,主要介紹了window_manager的發(fā)展史和功能介紹,本文開始介紹OpenHarmony的window_manager的具體實現(xiàn)相關(guān)。

window_manager在OpenHarmony中的代碼目錄:

foundation/window/window_manager/
├── dm # Dislplay Manager Client實現(xiàn)代碼
├── BUILD.gn
├── include
├── src
└── test
├── dmserver # Dislplay Manager Service實現(xiàn)代碼
├── BUILD.gn
├── include
├── src
└── test
├── extension # Ability Component 窗口相關(guān)代碼實現(xiàn)目錄
├── extension_connection # Ability Component 嵌入部分
└── window_extension # Ability Component 被嵌入部分
├── interfaces # 對外接口存放目錄
├── innerkits # native接口存放目錄
└── kits # js/napi接口存放目錄
├── previewer # IDE輕量模擬器窗口代碼實現(xiàn)目錄
├── BUILD.gn
├── include
├── mock
└── src
├── resources # 框架使用資源文件存放目錄
├── BUILD.gn
├── config
├── dialog_ui
└── media
├── sa_profile # 系統(tǒng)服務(wù)配置文件
├── 4606.xml
├── 4607.xml
└── BUILD.gn
├── snapshot # 截屏命令行工具實現(xiàn)代碼
├── BUILD.gn
├── include
├── src
└── test
├── test # Fuzz測試和系統(tǒng)測試用例存放目錄
├── BUILD.gn
├── common
├── demo
├── fuzztest
└── systemtest
├── utils # 工具類存放目錄
├── BUILD.gn
├── include
├── src
└── test
├── wm # Window Manager Client實現(xiàn)代碼
├── BUILD.gn
├── include
├── src
└── test
└── wmserver # Window Manager Service實現(xiàn)代碼
├── BUILD.gn
├── include
├── src
└── test

比較核心的文件夾是兩個使用Client-Server模型的wm/wmserver,dm/dmserver文件夾,其中Client端提供模塊對外的接口,Server端提供具體的實現(xiàn)。下面我們以wm/wmserver為例講解下windowmanager的實現(xiàn)。

window_manager的代碼實現(xiàn):

小Tip:當(dāng)學(xué)習(xí)一個新的模塊的時候,如果不知道如何下手,可以在這個模塊中選擇一個具體的功能(最好是具有代表性的),找到相關(guān)的接口(流程里的任何階段的都可以),然后去通過不斷的查詢調(diào)用者和接口本身的實現(xiàn)又調(diào)用了誰來梳理下流程,畫出時序圖,然后根據(jù)定義接口的頭文件來確定類圖。這兩個圖確定后,整體的代碼結(jié)構(gòu)和流程就會變得清晰。

我們先回顧下窗口管理的相關(guān)功能:

窗口管理:窗口提供管理窗口的一些基礎(chǔ)能力,包括對當(dāng)前窗口的創(chuàng)建、銷毀、各屬性設(shè)置,以及對各窗口間的管理調(diào)度。

我們很容易可以在window_impl.h文件中找到這些基礎(chǔ)能力的對應(yīng)接口:

\foundation\window\window_manager\wm\include\window_impl.h。

WMError Create(uint32_t parentId,   //創(chuàng)建
const std::shared_ptr<AbilityRuntime::Context>& context = nullptr);
virtual WMError Destroy() override; //銷毀

//窗口的管理調(diào)度
virtual WMError Show(uint32_t reason = 0, bool withAnimation = false) override;
virtual WMError Hide(uint32_t reason = 0, bool withAnimation = false) override;
virtual WMError MoveTo(int32_t x, int32_t y) override;
virtual WMError Resize(uint32_t width, uint32_t height) override;
virtual WMError SetKeepScreenOn(bool keepScreenOn) override;
virtual bool IsKeepScreenOn() const override;
virtual WMError SetTurnScreenOn(bool turnScreenOn) override;
virtual bool IsTurnScreenOn() const override;
virtual WMError SetBackgroundColor(const std::string& color) override;
virtual WMError SetTransparent(bool isTransparent) override;
virtual bool IsTransparent() const override;
virtual WMError SetBrightness(float brightness) override;
virtual float GetBrightness() const override;
virtual WMError SetCallingWindow(uint32_t windowId) override;
virtual void SetPrivacyMode(bool isPrivacyMode) override;
virtual bool IsPrivacyMode() const override;
virtual void SetSystemPrivacyMode(bool isSystemPrivacyMode) override;
virtual void DisableAppWindowDecor() override;
virtual WMError BindDialogTarget(sptr<IRemoteObject> targetToken) override;
virtual void SetSnapshotSkip(bool isSkip) override;

// window effect 屬性設(shè)置
virtual WMError SetCornerRadius(float cornerRadius) override;
virtual WMError SetShadowRadius(float radius) override;
virtual WMError SetShadowColor(std::string color) override;
virtual void SetShadowOffsetX(float offsetX) override;
virtual void SetShadowOffsetY(float offsetY) override;
virtual WMError SetBlur(float radius) override;
virtual WMError SetBackdropBlur(float radius) override;
virtual WMError SetBackdropBlurStyle(WindowBlurStyle blurStyle) override;

我們再以窗口的創(chuàng)建函數(shù)為例梳理下流程:

Create函數(shù)的實現(xiàn):

\foundation\window\window_manager\wm\src\window_impl.cpp。

WMError WindowImpl::Create(uint32_t parentId, const std::shared_ptr<AbilityRuntime::Context>& context)
{
//此處省略若干代碼
WMError ret = SingletonContainer::Get<WindowAdapter>().CreateWindow(windowAgent, property_, surfaceNode_,
windowId, token);
RecordLifeCycleExceptionEvent(LifeCycleEvent::CREATE_EVENT, ret);
//此處省略若干代碼
return ret;
}

可以再代碼里面看到調(diào)用了WindowAdapter中的CreateWindow函數(shù),而本身WindowImpl::Create的調(diào)用者可以通過IDE工具搜到:

\foundation\window\window_manager\wm\src\window.cpp。

sptr<Window> Window::Create(const std::string& windowName, sptr<WindowOption>& option,
const std::shared_ptr<OHOS::AbilityRuntime::Context>& context)
{
//此處省略若干代碼
WMError error = windowImpl->Create(option->GetParentId(), context);//調(diào)用windowImpl->Create
if (error != WMError::WM_OK) {
return nullptr;
}
return windowImpl;
}

通過不斷的尋找調(diào)用者和調(diào)用的接口,可以獲得一個時序圖(圖1):

由淺入深學(xué)習(xí)新模塊之window_manager(二)-開源基礎(chǔ)軟件社區(qū)

由淺入深學(xué)習(xí)新模塊之window_manager(二)-開源基礎(chǔ)軟件社區(qū)

圖1 開機動畫窗口創(chuàng)建時序圖

說明:

  1. 這個是開機動畫創(chuàng)建窗口流程時序圖。
  2. rs_surface_node.cpp這個類負(fù)責(zé)窗口的繪制,屬于graphic模塊的內(nèi)容,和window_manager模塊的關(guān)系就是window_manager的窗口最終還是要依賴graphic模塊去進行繪制的。
  3. window_adapter.cpp與window_manager_service.cpp之間使用IPC進行跨進程通訊,詳細(xì)的IPC實現(xiàn)說明會在下篇文章介紹。

代碼的文件結(jié)構(gòu)清晰了,大致的代碼流程也熟悉了,可以繪制類圖了(現(xiàn)在很多工具可以自動繪制類圖,但是建議自己親手繪制下,對理清代碼結(jié)構(gòu)和思路很有幫助)。

由淺入深學(xué)習(xí)新模塊之window_manager(二)-開源基礎(chǔ)軟件社區(qū)

由淺入深學(xué)習(xí)新模塊之window_manager(二)-開源基礎(chǔ)軟件社區(qū)

圖2 windowmanager類圖

說明:

  1. window_manager_service是窗口管理的服務(wù)端類,窗口管理功能的具體實現(xiàn)是在服務(wù)端實現(xiàn)。
  2. window_manager_service和window_adapter屬于不同線程,他們通過IPC進行通訊。
  3. 窗口管理服務(wù),提供窗口布局、Z序控制、窗口樹結(jié)構(gòu)、窗口拖拽、窗口快照等能力,并提供窗口布局和焦點窗口給多模輸入,這些功能在各個類的中的對應(yīng):
    窗口布局:WindowLayOutPolicy
    Z序控制:WindowZorderPolicy
    窗口樹結(jié)構(gòu):WindowRoot
    窗口拖拽:DragController
    窗口快照:SnapshotController
    提供多模輸入:InputWindowMonitor

具體的代碼實現(xiàn)有興趣的同學(xué)可以自行研究,更有興趣的同學(xué)可以考慮繪制下DisplayManager的時序圖和類圖。

參考文獻:

https://gitee.com/openharmony/window_window_manager 《window_manger倉源碼》

??想了解更多關(guān)于開源的內(nèi)容,請訪問:??

??51CTO 開源基礎(chǔ)軟件社區(qū)??

??https://ost.51cto.com??

責(zé)任編輯:jianghua 來源: 51CTO 開源基礎(chǔ)軟件社區(qū)
相關(guān)推薦

2023-02-08 15:32:56

新模塊操作系統(tǒng)

2011-07-05 17:45:07

PHP框架

2019-03-08 09:28:42

Google 開源技術(shù)

2022-10-09 08:53:06

存儲容量SSD

2010-03-25 17:20:00

CentOS入門

2011-07-15 17:05:14

2011-08-23 13:56:12

MySQLConnection

2021-03-19 08:47:38

Zabbix 5.2VMware監(jiān)控

2025-06-09 09:32:35

2021-05-26 16:21:59

亞馬遜云科技機器學(xué)習(xí)

2017-02-25 20:32:36

2021-04-23 08:41:17

Zabbix 5.2Nginx監(jiān)控

2021-04-15 08:45:25

Zabbix 5.2Apache監(jiān)控

2016-11-11 14:12:19

R語言

2022-11-03 14:13:52

強化學(xué)習(xí)方法

2025-07-16 10:42:32

2021-04-25 08:28:44

Zabbix 5.2監(jiān)控IIS服務(wù)運維

2020-12-31 08:36:03

Zabbix郵箱告警Python
點贊
收藏

51CTO技術(shù)棧公眾號

99在线热播精品免费| 视频国产一区| 亚洲品质自拍视频网站| 亚洲a一级视频| 国产成人精品亚洲男人的天堂 | 91精品久久久久久久久不口人| 极品色av影院| 欧美久久香蕉| 欧美男生操女生| 99在线精品免费视频| 丁香在线视频| 大桥未久av一区二区三区中文| 欧美在线免费视频| 国产日韩欧美在线观看视频| 欧美大奶一区二区| 欧美老女人在线| 国产精品秘入口18禁麻豆免会员| 免费黄网站在线播放| av在线不卡电影| 国产欧美 在线欧美| 国产黄色片视频| 欧美hentaied在线观看| 亚洲国模精品一区| 最近2019中文字幕在线高清| 无码免费一区二区三区免费播放 | 欧美日韩国产精品一区二区| a在线观看视频| 久久免费高清| 高清欧美性猛交xxxx| av资源在线免费观看| 亚洲精品蜜桃乱晃| 欧美大片国产精品| 性生生活大片免费看视频| 345成人影院| 亚洲午夜激情网站| 最新国产精品久久| 日本高清中文字幕在线| 久久久精品国产免费观看同学| av在线亚洲男人的天堂| 国产91亚洲精品一区二区三区| 久草综合在线视频| 日韩中文首页| 国产一区二区激情| 熟女俱乐部一区二区| 豆花视频一区二区| 日韩欧美国产1| 日韩欧美中文视频| 成人自拍视频| 欧美精品第1页| 五月激情婷婷在线| 四虎影视成人精品国库在线观看 | 国产亲伦免费视频播放| 蜜臀av性久久久久蜜臀aⅴ| 日本成人精品在线| 亚洲 日本 欧美 中文幕| 销魂美女一区二区三区视频在线| 97精品在线观看| 日本学生初尝黑人巨免费视频| 欧美日韩福利| 久久久久久av| 精品在线视频免费| 99综合在线| 日本电影亚洲天堂| 成人一二三四区| 免费高清成人在线| 91网站免费观看| 精品久久久中文字幕人妻| 国产精品亚洲а∨天堂免在线| 亚洲一区二区中文| 丰满岳乱妇国产精品一区| 成人黄色网址在线观看| 亚洲图片制服诱惑| 国产在线资源一区| 亚洲精品国产精| www.日韩av| 欧美激情论坛| 91在线品视觉盛宴免费| 最新日韩在线视频| 久久亚洲国产成人精品无码区| 成人一级福利| 色激情天天射综合网| 依人在线免费视频| 在线综合色站| 亚洲人在线观看| 久久福利免费视频| 亚洲激情婷婷| 国产精品久久97| 国产精品国产三级国产普通话对白| 国产在线精品一区二区不卡了 | 亚洲精品字幕在线| 337p粉嫩大胆色噜噜噜噜亚洲| 欧美日韩在线精品| 九七久久人人| 欧美日韩日本国产| 午夜精品久久久久久久99热影院| 国产香蕉精品| 中文欧美日本在线资源| 国产免费无码一区二区视频| 国产一区91| 91久久在线观看| 天堂√在线中文官网在线| 国产精品成人免费| 少妇高潮毛片色欲ava片| 成人亚洲网站| 亚洲国产毛片完整版| 欧美日韩国产黄色| 国产欧美精品| 91福利视频导航| 黄网在线观看| 亚洲超丰满肉感bbw| jizzzz日本| 亚洲精华一区二区三区| 久久99国产精品自在自在app| 精品视频一二三区| 成人黄色777网| mm131午夜| 巨胸喷奶水www久久久免费动漫| 欧美成人女星排行榜| 97精品视频在线| 日本在线观看视频网站| 久久99精品久久久久久国产越南 | 亚洲成av人片一区二区三区| 视频二区在线播放| 欧美亚洲色图校园春色| 久久亚洲欧美日韩精品专区| av一级在线观看| 成人av资源在线观看| 麻豆视频传媒入口| 免费一区二区三区四区| 亚洲日韩第一页| 国产做受高潮漫动| 国产福利一区在线| 99精品一级欧美片免费播放| 国产成人午夜性a一级毛片| 亚洲精品久久久久中文字幕二区| 福利所第一导航| 精品一区二区av| 亚洲韩国在线| 中韩乱幕日产无线码一区| 亚洲精选在线观看| 亚洲免费黄色网址| 91老司机福利 在线| 九九爱精品视频| 国产精品17p| 欧美二区在线播放| 亚洲精品18在线观看| 亚洲综合在线视频| 亚洲精品激情视频| 亚洲美女少妇无套啪啪呻吟| 国产九色精品| 999av小视频在线| 亚洲国产精久久久久久 | 亚洲欧洲一区| 国产亚洲欧美另类一区二区三区| 波多野结衣久久| 亚洲成人教育av| 日本五十路女优| 久久综合色综合88| 九色porny91| 日韩精品dvd| 92国产精品视频| 97超碰在线公开在线看免费| 91精品免费观看| 免费在线观看黄色av| av男人的天堂在线| av亚洲精华国产精华精华| 国产原创popny丨九色| 久久porn| 国产成人精品电影久久久| 国产视频三级在线观看播放| 欧美亚洲日本一区| 国产精品suv一区二区88| 国产综合色在线| 免费在线黄网站| 日韩激情网站| 国产精品一区二区性色av| caoporn免费在线视频| 日韩免费电影一区| 国产区在线观看视频| 国产亚洲欧美中文| 91看片破解版| 99视频+国产日韩欧美| 日韩欧美精品一区二区三区经典| 亚洲色图综合| 91国内免费在线视频| 国产香蕉视频在线看| 91精品黄色片免费大全| 日韩高清精品免费观看| 国产欧美日韩在线看| a级大片免费看| 亚洲一区久久| 波多野结衣三级在线| 精品少妇3p| 国产男女猛烈无遮挡91| 超碰在线网站| 最近日韩中文字幕中文| 免费看黄网站在线观看| 欧美中文一区二区三区| 青草草在线视频| 国产午夜精品一区二区三区嫩草 | 久久精品夜色噜噜亚洲aⅴ| 一起操在线视频| 中文在线不卡| 青春草在线视频免费观看| 三级精品视频| 亚洲最大的免费| 天天综合网天天| 欧美激情精品久久久久| 在线观看黄色av| 精品无人区太爽高潮在线播放| 一级黄在线观看| 岛国av在线不卡| 久草视频免费在线| 中文一区一区三区高中清不卡| 奇米4444一区二区三区| 中文字幕在线看人| 亚洲黄色小视频| 精品国产av无码| 国产激情91久久精品导航| 日韩 欧美 高清| 伊人久久成人| 国产精品88久久久久久妇女| 精品国产网站| 久久伊人资源站| 国产伦精品一区二区三区在线播放 | 亚洲精品美女免费| 精品人妻一区二区三区含羞草 | 中文字幕五月欧美| 中文字幕av网址| 成人激情av网| 无码人妻一区二区三区在线| 激情图片小说一区| 欧美日韩在线观看不卡| 久久久精品网| 六月丁香婷婷激情| 99亚洲精品| 精品久久久久久无码中文野结衣| 午夜精品一区二区三区国产 | 91精品久久久久久蜜桃| 综合欧美精品| 国产美女高潮久久白浆| 777午夜精品电影免费看| 国产va免费精品高清在线观看 | 中文无码久久精品| 在线视频91| 久久高清免费| 一区二区三区久久网| 四季av一区二区凹凸精品| 先锋在线资源一区二区三区| 国模精品一区| 神马影院午夜我不卡影院| 欧美视频免费| 亚洲精品二区| 天天色天天射综合网| 一区二区冒白浆视频| 国产精品久久久久蜜臀| 亚洲欧美日韩不卡| 日本少妇毛茸茸高潮| 国产精品久久久久9999吃药| 国产又色又爽又高潮免费| 国产精品国产三级国产aⅴ原创| 在线观看免费黄色网址| 国产精品国产三级国产三级人妇| 操她视频在线观看| 亚洲精选视频在线| 国产亚洲精品久久久久久打不开 | 一区二区三区四区高清视频 | 一区二区三区韩国免费中文网站| 欧美高清视频一区二区三区在线观看| 久久99国产精品视频| 日韩欧美亚洲v片| 99久久.com| 91视频 - 88av| 亚洲精品麻豆| 国内自拍视频一区| 国产一区二区看久久| 伦理片一区二区| 91麻豆精品在线观看| 91社区视频在线观看| 中文字幕亚洲欧美在线不卡| 久久艹精品视频| 福利二区91精品bt7086| 自拍偷拍福利视频| 精品免费国产一区二区三区四区| 五月激情六月婷婷| 中文字幕在线精品| heyzo在线欧美播放| 国产精品第二页| 91久久偷偷做嫩草影院电| 久久五月天婷婷| 天天综合精品| 欧美激情 国产精品| 蜜桃久久久久久| 白嫩情侣偷拍呻吟刺激 | 日韩亚洲一区在线播放| 久久久久久久久久久9不雅视频| 奇米影视亚洲色图| 麻豆精品视频在线观看免费| 精品久久久久久无码人妻| 久久久久久久久99精品| 国产精品视频一区二区三| 欧美日韩中文字幕综合视频| 伊人精品一区二区三区| 亚洲福利视频网| 日本在线观看免费| 国产suv精品一区二区| 亚洲天堂av资源在线观看| 亚洲国产欧美日韩| 一区二区三区国产盗摄| 成人免费黄色av| 91精品国产一区二区在线观看 | 亚洲偷熟乱区亚洲香蕉av| 亚洲激情一区二区三区| 国产一国产二国产三| 欧美videossex极品| 伊人久久国产| 国产在线观看一区二区| 3751色影院一区二区三区| 91精品久久久久久久久久久久久久 | 欧美在线aaa| 国产美女www爽爽爽视频| 日本在线中文字幕一区| 中文字幕一区二区三区不卡| 欧美重口另类videos人妖| 亚洲少妇一区二区三区| 日本一区二区三区在线观看视频| 国内黄色精品| 成人国产一区二区| 日韩一区欧美| 亚洲人成色77777| 99精品欧美一区二区三区小说| 国产一区二区精彩视频| 欧美日韩在线一区二区| 好男人免费精品视频| 欧美一区二区.| 久久悠悠精品综合网| www.国产在线视频| 国产成人啪免费观看软件| 免费黄色激情视频| 91福利区一区二区三区| 日韩a在线观看| 欧美性做爰毛片| 欧美三级午夜理伦三级小说| 国产va亚洲va在线va| 国产成人精品一区二| 全程偷拍露脸中年夫妇| 69堂国产成人免费视频| 搞黄网站在线观看| 91久久久久久久久久久| 综合久久99| 95视频在线观看| 图片区小说区区亚洲影院| 欧美一区,二区| 91地址最新发布| 久久99青青| 久久撸在线视频| 亚洲人吸女人奶水| 精品人妻一区二区三区蜜桃| 欧美大片免费观看| 精品欠久久久中文字幕加勒比| 成人免费视频91| 久久综合久久综合亚洲| 欧美亚洲精品天堂| 亚洲香蕉伊综合在人在线视看 | jlzzjlzz亚洲女人| 欧美伦理片在线观看| 在线中文免费视频| 亚洲自拍小视频免费观看| 欧美成熟视频| 中文字幕无码人妻少妇免费| 欧美午夜性色大片在线观看| 国产精品一区在线看| 91精品国产自产在线| 欧美96在线丨欧| 精品无码在线视频| 欧美亚洲禁片免费| 国产福利在线播放麻豆| 99久久99| 久久久青草婷婷精品综合日韩| 久久久久99精品成人| 日韩一级片网站| 日本黄色免费在线| 亚洲啪啪av| 大美女一区二区三区| 91黑人精品一区二区三区| 久久成人av网站| 国产精品一二三区视频| 欧美一区二区在线视频| 欧美hdxxxxx| 欧美三级电影在线播放| 精品亚洲欧美一区| 日韩欧美大片在线观看| 中文字幕日韩av综合精品| 视频精品国内| 午夜dv内射一区二区| 一区二区激情小说| 成人p站proumb入口| 国产高清一区视频| 久久精品国产免费| 国产情侣自拍av|