




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第6章程序框架服務(wù)和方舟UI框架程序框架服務(wù)AbilityKit程序框架服務(wù)使用場(chǎng)景眾多,可包括:(1)應(yīng)用的多Module開發(fā):應(yīng)用可通過不同類型的Module(HAP、HAR、HSP)來實(shí)現(xiàn)應(yīng)用的功能開發(fā)。其中,HAP用于實(shí)現(xiàn)應(yīng)用的功能和特性,HAR與HSP用于實(shí)現(xiàn)代碼和資源的共享。(2)應(yīng)用內(nèi)的交互:應(yīng)用內(nèi)的不同組件之間可以相互跳轉(zhuǎn)。比如,在支付應(yīng)用中,通過入口UIAbility組件啟動(dòng)收付款UIAbility組件。(3)應(yīng)用間的交互:當(dāng)前應(yīng)用可以啟動(dòng)其他應(yīng)用,來完成某個(gè)任務(wù)或操作。比如,啟動(dòng)瀏覽器應(yīng)用來打開網(wǎng)站、啟動(dòng)文件應(yīng)用來瀏覽或編輯文件等。(4)應(yīng)用的跨設(shè)備流轉(zhuǎn):通過應(yīng)用的跨端遷移和多端協(xié)同,獲得更好的使用體驗(yàn)。比如,在平板上播放的視頻,遷移到智慧屏繼續(xù)播放。在上述這些使用場(chǎng)景中,程序框架服務(wù)具備如下功能:(1)提供應(yīng)用進(jìn)程創(chuàng)建和銷毀、應(yīng)用生命周期調(diào)度能力。(2)提供應(yīng)用組件運(yùn)行入口、應(yīng)用組件生命周期調(diào)度、組件間交互等能力。(3)提供應(yīng)用上下文環(huán)境、系統(tǒng)環(huán)境變化監(jiān)聽等能力。(4)提供應(yīng)用流轉(zhuǎn)能力。(5)提供多包機(jī)制、共享包、應(yīng)用信息配置等能力。(6)提供程序訪問控制能力,詳見訪問控制概述。Stage模型開發(fā)概述Stage模型提供UIAbility和ExtensionAbility兩種類型的組件,這兩種組件都有具體的類承載,支持面向?qū)ο蟮拈_發(fā)方式。每個(gè)UIAbility實(shí)例都會(huì)與一個(gè)WindowStage類實(shí)例綁定,該類起到了應(yīng)用進(jìn)程內(nèi)窗口管理器的作用。在Stage模型上,Context及其派生類向開發(fā)者提供在運(yùn)行期可以調(diào)用的各種資源和能力。每個(gè)Entry類型或者Feature類型的HAP在運(yùn)行期都有一個(gè)AbilityStage類實(shí)例Stage應(yīng)用組件UIAbility組件UIAbility組件是一種包含UI的應(yīng)用組件,主要用于和用戶交互。UIAbility組件是系統(tǒng)調(diào)度的基本單元,為應(yīng)用提供繪制界面的窗口。一個(gè)應(yīng)用可以包含一個(gè)或多個(gè)UIAbility組件。圖6-2UIAbility生命周期狀態(tài)UIAbility的啟動(dòng)模式是指UIAbility實(shí)例在啟動(dòng)時(shí)的不同呈現(xiàn)狀態(tài)。針對(duì)不同的業(yè)務(wù)場(chǎng)景,系統(tǒng)提供了三種啟動(dòng)模式:singleton(單實(shí)例模式)、multiton(多實(shí)例模式)和specified(指定實(shí)例模式)。UIAbility組件的基本用法包括:指定UIAbility的啟動(dòng)頁(yè)面以及獲取UIAbility的上下文UIAbilityContext。組件與UI的數(shù)據(jù)同步:使用EventHub進(jìn)行數(shù)據(jù)通信和使用AppStorage/LocalStorage進(jìn)行數(shù)據(jù)同步ExtensionAbility組件圖6-3使用InputMethodExtensionAbility組件AbilityStage組件容器AbilityStage是一個(gè)Module級(jí)別的組件容器,應(yīng)用的HAP在首次加載時(shí)會(huì)創(chuàng)建一個(gè)AbilityStage實(shí)例,可以對(duì)該Module進(jìn)行初始化等操作。AbilityStage與Module一一對(duì)應(yīng),即一個(gè)Module擁有一個(gè)AbilityStage。DevEcoStudio默認(rèn)工程中未自動(dòng)生成AbilityStage,如需要使用AbilityStage的能力,可以手動(dòng)新建一個(gè)AbilityStage文件,具體步驟如下。(1)在工程Module對(duì)應(yīng)的ets目錄下,右鍵選擇“New>Directory”,新建一個(gè)目錄并命名為myabilitystage。(2)在myabilitystage目錄,右鍵選擇“New>ArkTSFile”,新建一個(gè)文件并命名為MyAbilityStage.ets。(3)打開MyAbilityStage.ets文件,導(dǎo)入AbilityStage的依賴包,自定義類繼承AbilityStage并加上需要的生命周期回調(diào),示例中增加了一個(gè)onCreate()生命周期回調(diào)。應(yīng)用上下文Context圖6-4各類Context的繼承關(guān)系圖6-5各類Context的持有關(guān)系
各類Context的獲取方式(1)獲取UIAbilityContext。每個(gè)UIAbility中都包含了一個(gè)Context屬性,提供操作應(yīng)用組件、獲取應(yīng)用組件的配置信息等能力。(2)獲取特定場(chǎng)景ExtensionContext。以ServiceExtensionContext為例,表示后臺(tái)服務(wù)的上下文環(huán)境,繼承自ExtensionContext,提供后臺(tái)服務(wù)相關(guān)的接口能力。(3)獲取AbilityStageContext。Module級(jí)別的Context,和基類Context相比,額外提供HapModuleInfo、Configuration等信息。(4)獲取ApplicationContext。應(yīng)用級(jí)別的Context。ApplicationContext在基類Context的基礎(chǔ)上提供了訂閱應(yīng)用內(nèi)應(yīng)用組件的生命周期的變化、訂閱系統(tǒng)內(nèi)存變化和訂閱應(yīng)用內(nèi)系統(tǒng)環(huán)境的變化的能力,在UIAbility、ExtensionAbility、AbilityStage中均可以獲取。信息傳遞載體Want圖6-6Want用法示意進(jìn)程模型圖6-7進(jìn)程模型示意圖圖6-8多進(jìn)程示意圖線程模型Stage模型下的線程主要有如下三類:1)主線程
主線程的功能包括:執(zhí)行UI繪制。管理主線程的ArkTS引擎實(shí)例,使多個(gè)UIAbility組件能夠運(yùn)行在其之上。管理其他線程的ArkTS引擎實(shí)例,例如使用TaskPool(任務(wù)池)創(chuàng)建任務(wù)或取消任務(wù)、啟動(dòng)和終止Worker線程。分發(fā)交互事件。處理應(yīng)用代碼的回調(diào),包括事件處理和生命周期管理。接收TaskPool以及Worker線程發(fā)送的消息。2)TaskPoolWorker線程TaskPoolWorker線程用于執(zhí)行耗時(shí)操作,支持設(shè)置調(diào)度優(yōu)先級(jí)、負(fù)載均衡等功能,推薦使用。3)Worker線程Worker線程用于執(zhí)行耗時(shí)操作,支持線程間通信。程序訪問控制1)TokenID系統(tǒng)采用TokenID(Tokenidentity)作為應(yīng)用的唯一標(biāo)識(shí)。2)APL等級(jí)為了防止應(yīng)用過度索取和濫用權(quán)限,系統(tǒng)基于APL等級(jí),配置了不同的權(quán)限開放范圍。這里的APL指的是應(yīng)用的權(quán)限申請(qǐng)優(yōu)先級(jí)的定義,不同APL等級(jí)的應(yīng)用能夠申請(qǐng)的權(quán)限等級(jí)不同。(1)應(yīng)用APL等級(jí)。(2)權(quán)限APL等級(jí)3)授權(quán)方式根據(jù)授權(quán)方式的不同,權(quán)限類型可分為system_grant(系統(tǒng)授權(quán))和user_grant(用戶授權(quán))。選擇申請(qǐng)權(quán)限的方式圖6-9申請(qǐng)權(quán)限流程圖方舟UI框架圖6-10方舟UI框架示意圖圖6-11基于ArkTS的聲明式開發(fā)范式的方舟UI框架整體架構(gòu)圖方舟UI框架的實(shí)現(xiàn)圖6-12常見頁(yè)面結(jié)構(gòu)圖圖6-13布局元素組成圖線性布局在布局容器內(nèi),可以通過space屬性設(shè)置排列方向上子元素的間距,使各子元素在排列方向上有等間距效果。以Column容器排列方向上的間距為例。示例6-5:Column容器排列方向上的間距Column({space:20}){Text('space:20').fontSize(15).fontColor(Color.Gray).width('90%')Row().width('90%').height(50).backgroundColor(0xF5DEB3)Row().width('90%').height(50).backgroundColor(0xD2B48C)Row().width('90%').height(50).backgroundColor(0xF5DEB3)}.width('100%')示例6-6:Column容器內(nèi)子元素在水平方向上的排列Column({}){Column(){}.width('80%').height(50).backgroundColor(0xF5DEB3)
Column(){}.width('80%').height(50).backgroundColor(0xD2B48C)
Column(){}.width('80%').height(50).backgroundColor(0xF5DEB3)}.width('100%').alignItems(HorizontalAlign.Start).backgroundColor('rgb(242,242,242)')添加組件(1)創(chuàng)建不包含子組件的按鈕。(2)創(chuàng)建包含子組件的按鈕。2)設(shè)置按鈕類型Button有三種可選類型,分別為膠囊類型(Capsule)、圓形按鈕(Circle)和普通按鈕(Normal),通過type進(jìn)行設(shè)置。1)創(chuàng)建按鈕3)自定義樣式4)添加事件Button組件通常用于觸發(fā)某些操作,可以綁定onClick事件來響應(yīng)點(diǎn)擊操作后的自定義行為。1.
按鈕(Button)2.
單選框(Radio)1)創(chuàng)建單選框2)添加事件除支持通用事件外,Radio還用于選中后觸發(fā)某些操作,可以綁定onChange事件來響應(yīng)選中操作后的自定義行為。3.
切換按鈕(Toggle)(1)創(chuàng)建不包含子組件的Toggle。(2)創(chuàng)建包含子組件的Toggle。2)添加事件除支持通用事件外,Toggle還用于選中和取消選中后觸發(fā)某些操作,可以綁定onChange事件來響應(yīng)操作后的自定義行為。添加組件4.
進(jìn)度條(Progress)Progress有5種可選類型,通過ProgressType可以設(shè)置進(jìn)度條樣式,ProgressType類型包括:ProgressType.Linear(線性樣式)、ProgressType.Ring(環(huán)形無刻度樣式)、ProgressType.ScaleRing(環(huán)形有刻度樣式)、ProgressType.Eclipse(圓形樣式)和ProgressType.Capsule(膠囊樣式)。添加組件5.
文本顯示(Text/Span)Text是文本組件,通常用于展示用戶視圖,如顯示文章的文字。Text('我是Text'){Span('我是Span')}.padding(10).borderWidth(1)(2)添加事件。由于Span組件無尺寸信息,事件僅支持添加點(diǎn)擊事件onClick。6.
文本輸入(TextInput/TextArea)TextInput、TextArea是輸入框組件,通常用于響應(yīng)用戶的輸入操作,比如評(píng)論區(qū)的輸入、聊天框的輸入、表格的輸入等,也可以結(jié)合其他組件構(gòu)建功能頁(yè)面,例如登錄注冊(cè)頁(yè)面。TextInput有9種可選類型,分別為Normal基本輸入模式、Password密碼輸入模式、Email郵箱地址輸入模式、Number純數(shù)字輸入模式、PhoneNumber電話號(hào)碼輸入模式、USER_NAME用戶名輸入模式、NEW_PASSWORD新密碼輸入模式、NUMBER_PASSWORD純數(shù)字密碼輸入模式、SCREEN_LOCK_PASSWORD鎖屏應(yīng)用密碼輸入模式、NUMBER_DECIMAL帶小數(shù)點(diǎn)的數(shù)字輸入模式。通過type屬性進(jìn)行設(shè)置添加組件7.
顯示圖片(Image)Image通過調(diào)用接口來創(chuàng)建,接口調(diào)用形式如下:Image(src:PixelMap|ResourceStr|DrawableDescriptor)該接口通過圖片數(shù)據(jù)源獲取圖片,支持本地圖片和網(wǎng)絡(luò)圖片的渲染展示。其中,src是圖片的數(shù)據(jù)源。8.
視頻播放(Video)Video組件用于播放視頻文件并控制其播放狀態(tài),常用于為短視頻和應(yīng)用內(nèi)部視頻的列表頁(yè)面。當(dāng)視頻完整出現(xiàn)時(shí)會(huì)自動(dòng)播放,用戶點(diǎn)擊視頻區(qū)域則會(huì)暫停播放,同時(shí)顯示播放進(jìn)度條,通過拖動(dòng)播放進(jìn)度條指定視頻播放到具體位置。9.
自定義繪制(XComponent)XComponent組件作為一種繪制組件,通常用于滿足開發(fā)者較為復(fù)雜的自定義繪制需求,例如相機(jī)預(yù)覽流的顯示和游戲畫面的繪制。其可通過指定其type字段來實(shí)現(xiàn)不同的功能,主要有兩個(gè)“surface”和“component”字段可供選擇。添加氣泡和菜單1.添加氣泡氣泡Popup屬性可綁定在組件上顯示氣泡彈窗提示,設(shè)置彈窗內(nèi)容、交互邏輯和顯示狀態(tài)。主要用于屏幕錄制、信息彈出提醒等顯示狀態(tài)。氣泡分為兩種類型,一種是系統(tǒng)提供的氣泡PopupOptions,一種是開發(fā)者可以自定義的氣泡CustomPopupOptions。2.菜單(Menu)Menu是菜單接口,一般用于鼠標(biāo)右鍵彈窗、點(diǎn)擊彈窗等。1)創(chuàng)建默認(rèn)樣式的菜單2)創(chuàng)建自定義樣式的菜單設(shè)置組件導(dǎo)航組件導(dǎo)航最常見的是Navigation和Tabs。本節(jié)主要介紹Navigation。圖6-34單頁(yè)面布局示意圖圖6-35單頁(yè)面顯示模式圖6-36分欄布局示意圖圖6-37分欄顯示模式設(shè)置頁(yè)面路由頁(yè)面路由(@ohos.router)指在應(yīng)用程序中實(shí)現(xiàn)不同頁(yè)面之間的跳轉(zhuǎn)和數(shù)據(jù)傳遞。Router模塊通過不同的url地址,可以方便地進(jìn)行頁(yè)面路由,輕松地訪問不同的頁(yè)面。1.頁(yè)面跳轉(zhuǎn)Router模塊提供了兩種跳轉(zhuǎn)模式,分別是router.pushUrl()和router.replaceUrl()。同時(shí),Router模塊提供了兩種實(shí)例模式,分別是Standard和Single。這兩種模式?jīng)Q定了目標(biāo)url是否會(huì)對(duì)應(yīng)多個(gè)實(shí)例。2.頁(yè)面返回在返回的過程中,可能需要將數(shù)據(jù)傳遞給目標(biāo)頁(yè)面,這就需要用到數(shù)據(jù)傳遞功能。3.命名路由在開發(fā)中為了跳轉(zhuǎn)到共享包Har或者Hsp中的頁(yè)面(即共享包中路由跳轉(zhuǎn)),可以使用router.pushNamedRoute()來實(shí)現(xiàn)。支持交互事件圖6-38觸摸事件原理1.點(diǎn)擊事件點(diǎn)擊事件是指通過手指或手寫筆做出一次完整的按下和抬起動(dòng)作。當(dāng)發(fā)生點(diǎn)擊事件時(shí),會(huì)觸發(fā)以下回調(diào)函數(shù):onClick(event:(event?:ClickEvent)=>void)event參數(shù)提供點(diǎn)擊事件相對(duì)于窗口或組件的坐標(biāo)位置,以及發(fā)生點(diǎn)擊的事件源。2.拖拽事件3.觸摸事件當(dāng)手指或手寫筆在組件上觸碰時(shí),會(huì)觸發(fā)不同動(dòng)作所對(duì)應(yīng)的事件響應(yīng),包括按下(Down)、滑動(dòng)(Move)、抬起(Up)事件:onTouch(event:(event?:TouchEvent)=>void)event.type為TouchType.Down:表示手指按下。event.type為TouchType.Up:表示手指抬起。event.type為TouchType.Move:表示手指按住移動(dòng)。OpenHarmony北向開發(fā)典型項(xiàng)目:分布式繪圖分布式設(shè)備管理是分布式業(yè)務(wù)入口,在分布式業(yè)務(wù)中對(duì)周邊可信和非可信設(shè)備進(jìn)行統(tǒng)一管理。分布式設(shè)備管理提供如下四大功能:1)發(fā)現(xiàn)發(fā)現(xiàn)周圍終端設(shè)備并上報(bào)。周圍設(shè)備需要連接同局域網(wǎng)或者同時(shí)打開藍(lán)牙,可以根據(jù)設(shè)備類型、距離、設(shè)備是否可信等進(jìn)行篩選。2)綁定不同設(shè)備協(xié)同合作完成分布式業(yè)務(wù)的前提是設(shè)備間可信,對(duì)于周邊發(fā)現(xiàn)的不可信設(shè)備,可通過綁定使彼此建立可信關(guān)系,提供pin碼、碰、掃、靠等設(shè)備認(rèn)證框架,支持對(duì)接各種認(rèn)證交互接口。3)查詢查詢功能包含:查詢本機(jī)設(shè)備信息、查詢周圍的在線的可信設(shè)備、查詢可信設(shè)備信息。4)監(jiān)聽監(jiān)聽設(shè)備上、下線。設(shè)備上線表示設(shè)備間已經(jīng)可信,業(yè)務(wù)可以發(fā)起分布式操作;設(shè)備下線表示分布業(yè)務(wù)不可用。OpenHarmony北向開發(fā)典型項(xiàng)目:分布式繪圖繪圖部分本項(xiàng)目中繪圖所使用的組件主要是canvas畫布組件,其屬性與html5的canvas畫布屬性相同,只是在語(yǔ)法上面使用了ArkUI的語(yǔ)法特征。
開發(fā)者使用CanvasRenderingContext2D對(duì)象和OffscreenCanvasRenderingContext2D對(duì)象在Canvas組件上進(jìn)行繪制,繪制對(duì)象可以是基礎(chǔ)形狀、文本、圖片等。OffscreenCanvasRenderingContext2D對(duì)象和CanvasRenderingContext2D對(duì)象提供了大量的屬性和方法,可以用來繪制文本、圖形,處理像素等,是Canvas組件的核心。常用接
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二級(jí)醫(yī)院健康教育
- 幼兒園就醫(yī)禮儀規(guī)范
- 2025標(biāo)準(zhǔn)簡(jiǎn)易的安置房贈(zèng)與合同范本
- 秋季養(yǎng)生之衣食住行健康入秋順時(shí)而養(yǎng)課件
- 2025勞動(dòng)合同中的解除條款
- 臺(tái)州市廣聯(lián)達(dá)培訓(xùn)課件
- 2025年上海市土地使用權(quán)出讓合同
- 古銀配件基礎(chǔ)知識(shí)培訓(xùn)課件
- 2025年食品安全管理知識(shí)培訓(xùn)測(cè)試題有答案
- 2025年領(lǐng)導(dǎo)干部任前廉政法規(guī)考試模擬試題(附答案)
- (零診)成都市2023級(jí)(2026屆)高中畢業(yè)班摸底測(cè)試歷史試卷(含答案)
- 2025年廣東省高考政治試卷真題(含答案解析)
- 風(fēng)濕免疫系統(tǒng)疾病概述
- 胸痛患者院前急救
- (2025)醫(yī)保知識(shí)考試試題庫(kù)(附含答案)
- 2025-2030年中國(guó)車載娛樂產(chǎn)業(yè)發(fā)展?fàn)顩r分析及投資商機(jī)研究報(bào)告
- DB32∕T 3616-2019 企業(yè)安全操作規(guī)程編制指南
- 甘肅省平?jīng)鍪?025年七年級(jí)下學(xué)期語(yǔ)文期末試卷及答案
- 稅務(wù)副科筆試題目及答案
- 解除投資協(xié)議書合同
- 凈菜可行性報(bào)告
評(píng)論
0/150
提交評(píng)論