版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(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開(kāi)發(fā):應(yīng)用可通過(guò)不同類(lèi)型的Module(HAP、HAR、HSP)來(lái)實(shí)現(xiàn)應(yīng)用的功能開(kāi)發(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)用中,通過(guò)入口UIAbility組件啟動(dòng)收付款UIAbility組件。(3)應(yīng)用間的交互:當(dāng)前應(yīng)用可以啟動(dòng)其他應(yīng)用,來(lái)完成某個(gè)任務(wù)或操作。比如,啟動(dòng)瀏覽器應(yīng)用來(lái)打開(kāi)網(wǎng)站、啟動(dòng)文件應(yīng)用來(lái)瀏覽或編輯文件等。(4)應(yīng)用的跨設(shè)備流轉(zhuǎn):通過(guò)應(yīng)用的跨端遷移和多端協(xié)同,獲得更好的使用體驗(yàn)。比如,在平板上播放的視頻,遷移到智慧屏繼續(xù)播放。在上述這些使用場(chǎng)景中,程序框架服務(wù)具備如下功能:(1)提供應(yīng)用進(jìn)程創(chuàng)建和銷(xiāo)毀、應(yīng)用生命周期調(diào)度能力。(2)提供應(yīng)用組件運(yùn)行入口、應(yīng)用組件生命周期調(diào)度、組件間交互等能力。(3)提供應(yīng)用上下文環(huán)境、系統(tǒng)環(huán)境變化監(jiān)聽(tīng)等能力。(4)提供應(yīng)用流轉(zhuǎn)能力。(5)提供多包機(jī)制、共享包、應(yīng)用信息配置等能力。(6)提供程序訪(fǎng)問(wèn)控制能力,詳見(jiàn)訪(fǎng)問(wèn)控制概述。Stage模型開(kāi)發(fā)概述Stage模型提供UIAbility和ExtensionAbility兩種類(lèi)型的組件,這兩種組件都有具體的類(lèi)承載,支持面向?qū)ο蟮拈_(kāi)發(fā)方式。每個(gè)UIAbility實(shí)例都會(huì)與一個(gè)WindowStage類(lèi)實(shí)例綁定,該類(lèi)起到了應(yīng)用進(jìn)程內(nèi)窗口管理器的作用。在Stage模型上,Context及其派生類(lèi)向開(kāi)發(fā)者提供在運(yùn)行期可以調(diào)用的各種資源和能力。每個(gè)Entry類(lèi)型或者Feature類(lèi)型的HAP在運(yùn)行期都有一個(gè)AbilityStage類(lèi)實(shí)例Stage應(yīng)用組件UIAbility組件UIAbility組件是一種包含UI的應(yīng)用組件,主要用于和用戶(hù)交互。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)打開(kāi)MyAbilityStage.ets文件,導(dǎo)入AbilityStage的依賴(lài)包,自定義類(lèi)繼承AbilityStage并加上需要的生命周期回調(diào),示例中增加了一個(gè)onCreate()生命周期回調(diào)。應(yīng)用上下文Context圖6-4各類(lèi)Context的繼承關(guān)系圖6-5各類(lèi)Context的持有關(guān)系
各類(lèi)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,和基類(lèi)Context相比,額外提供HapModuleInfo、Configuration等信息。(4)獲取ApplicationContext。應(yīng)用級(jí)別的Context。ApplicationContext在基類(lèi)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)程示意圖線(xiàn)程模型Stage模型下的線(xiàn)程主要有如下三類(lèi):1)主線(xiàn)程
主線(xiàn)程的功能包括:執(zhí)行UI繪制。管理主線(xiàn)程的ArkTS引擎實(shí)例,使多個(gè)UIAbility組件能夠運(yùn)行在其之上。管理其他線(xiàn)程的ArkTS引擎實(shí)例,例如使用TaskPool(任務(wù)池)創(chuàng)建任務(wù)或取消任務(wù)、啟動(dòng)和終止Worker線(xiàn)程。分發(fā)交互事件。處理應(yīng)用代碼的回調(diào),包括事件處理和生命周期管理。接收TaskPool以及Worker線(xiàn)程發(fā)送的消息。2)TaskPoolWorker線(xiàn)程TaskPoolWorker線(xiàn)程用于執(zhí)行耗時(shí)操作,支持設(shè)置調(diào)度優(yōu)先級(jí)、負(fù)載均衡等功能,推薦使用。3)Worker線(xiàn)程Worker線(xiàn)程用于執(zhí)行耗時(shí)操作,支持線(xiàn)程間通信。程序訪(fǎng)問(wèn)控制1)TokenID系統(tǒng)采用TokenID(Tokenidentity)作為應(yīng)用的唯一標(biāo)識(shí)。2)APL等級(jí)為了防止應(yīng)用過(guò)度索取和濫用權(quán)限,系統(tǒng)基于APL等級(jí),配置了不同的權(quán)限開(kāi)放范圍。這里的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)限類(lèi)型可分為system_grant(系統(tǒng)授權(quán))和user_grant(用戶(hù)授權(quán))。選擇申請(qǐng)權(quán)限的方式圖6-9申請(qǐng)權(quán)限流程圖方舟UI框架圖6-10方舟UI框架示意圖圖6-11基于ArkTS的聲明式開(kāi)發(fā)范式的方舟UI框架整體架構(gòu)圖方舟UI框架的實(shí)現(xiàn)圖6-12常見(jiàn)頁(yè)面結(jié)構(gòu)圖圖6-13布局元素組成圖線(xiàn)性布局在布局容器內(nèi),可以通過(guò)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è)置按鈕類(lèi)型Button有三種可選類(lèi)型,分別為膠囊類(lèi)型(Capsule)、圓形按鈕(Circle)和普通按鈕(Normal),通過(guò)type進(jìn)行設(shè)置。1)創(chuàng)建按鈕3)自定義樣式4)添加事件Button組件通常用于觸發(fā)某些操作,可以綁定onClick事件來(lái)響應(yīng)點(diǎn)擊操作后的自定義行為。1.
按鈕(Button)2.
單選框(Radio)1)創(chuàng)建單選框2)添加事件除支持通用事件外,Radio還用于選中后觸發(fā)某些操作,可以綁定onChange事件來(lái)響應(yīng)選中操作后的自定義行為。3.
切換按鈕(Toggle)(1)創(chuàng)建不包含子組件的Toggle。(2)創(chuàng)建包含子組件的Toggle。2)添加事件除支持通用事件外,Toggle還用于選中和取消選中后觸發(fā)某些操作,可以綁定onChange事件來(lái)響應(yīng)操作后的自定義行為。添加組件4.
進(jìn)度條(Progress)Progress有5種可選類(lèi)型,通過(guò)ProgressType可以設(shè)置進(jìn)度條樣式,ProgressType類(lèi)型包括:ProgressType.Linear(線(xiàn)性樣式)、ProgressType.Ring(環(huán)形無(wú)刻度樣式)、ProgressType.ScaleRing(環(huán)形有刻度樣式)、ProgressType.Eclipse(圓形樣式)和ProgressType.Capsule(膠囊樣式)。添加組件5.
文本顯示(Text/Span)Text是文本組件,通常用于展示用戶(hù)視圖,如顯示文章的文字。Text('我是Text'){Span('我是Span')}.padding(10).borderWidth(1)(2)添加事件。由于Span組件無(wú)尺寸信息,事件僅支持添加點(diǎn)擊事件onClick。6.
文本輸入(TextInput/TextArea)TextInput、TextArea是輸入框組件,通常用于響應(yīng)用戶(hù)的輸入操作,比如評(píng)論區(qū)的輸入、聊天框的輸入、表格的輸入等,也可以結(jié)合其他組件構(gòu)建功能頁(yè)面,例如登錄注冊(cè)頁(yè)面。TextInput有9種可選類(lèi)型,分別為Normal基本輸入模式、Password密碼輸入模式、Email郵箱地址輸入模式、Number純數(shù)字輸入模式、PhoneNumber電話(huà)號(hào)碼輸入模式、USER_NAME用戶(hù)名輸入模式、NEW_PASSWORD新密碼輸入模式、NUMBER_PASSWORD純數(shù)字密碼輸入模式、SCREEN_LOCK_PASSWORD鎖屏應(yīng)用密碼輸入模式、NUMBER_DECIMAL帶小數(shù)點(diǎn)的數(shù)字輸入模式。通過(guò)type屬性進(jìn)行設(shè)置添加組件7.
顯示圖片(Image)Image通過(guò)調(diào)用接口來(lái)創(chuàng)建,接口調(diào)用形式如下:Image(src:PixelMap|ResourceStr|DrawableDescriptor)該接口通過(guò)圖片數(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)播放,用戶(hù)點(diǎn)擊視頻區(qū)域則會(huì)暫停播放,同時(shí)顯示播放進(jìn)度條,通過(guò)拖動(dòng)播放進(jìn)度條指定視頻播放到具體位置。9.
自定義繪制(XComponent)XComponent組件作為一種繪制組件,通常用于滿(mǎn)足開(kāi)發(fā)者較為復(fù)雜的自定義繪制需求,例如相機(jī)預(yù)覽流的顯示和游戲畫(huà)面的繪制。其可通過(guò)指定其type字段來(lái)實(shí)現(xiàn)不同的功能,主要有兩個(gè)“surface”和“component”字段可供選擇。添加氣泡和菜單1.添加氣泡氣泡Popup屬性可綁定在組件上顯示氣泡彈窗提示,設(shè)置彈窗內(nèi)容、交互邏輯和顯示狀態(tài)。主要用于屏幕錄制、信息彈出提醒等顯示狀態(tài)。氣泡分為兩種類(lèi)型,一種是系統(tǒng)提供的氣泡PopupOptions,一種是開(kāi)發(fā)者可以自定義的氣泡CustomPopupOptions。2.菜單(Menu)Menu是菜單接口,一般用于鼠標(biāo)右鍵彈窗、點(diǎn)擊彈窗等。1)創(chuàng)建默認(rèn)樣式的菜單2)創(chuàng)建自定義樣式的菜單設(shè)置組件導(dǎo)航組件導(dǎo)航最常見(jiàn)的是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模塊通過(guò)不同的url地址,可以方便地進(jìn)行頁(yè)面路由,輕松地訪(fǎng)問(wèn)不同的頁(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è)面返回在返回的過(guò)程中,可能需要將數(shù)據(jù)傳遞給目標(biāo)頁(yè)面,這就需要用到數(shù)據(jù)傳遞功能。3.命名路由在開(kāi)發(fā)中為了跳轉(zhuǎn)到共享包Har或者Hsp中的頁(yè)面(即共享包中路由跳轉(zhuǎn)),可以使用router.pushNamedRoute()來(lái)實(shí)現(xiàn)。支持交互事件圖6-38觸摸事件原理1.點(diǎn)擊事件點(diǎn)擊事件是指通過(guò)手指或手寫(xiě)筆做出一次完整的按下和抬起動(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)手指或手寫(xiě)筆在組件上觸碰時(shí),會(huì)觸發(fā)不同動(dòng)作所對(duì)應(yīng)的事件響應(yīng),包括按下(Down)、滑動(dòng)(Move)、抬起(Up)事件:onTouch(event:(event?:TouchEvent)=>void)event.type為T(mén)ouchType.Down:表示手指按下。event.type為T(mén)ouchType.Up:表示手指抬起。event.type為T(mén)ouchType.Move:表示手指按住移動(dòng)。OpenHarmony北向開(kāi)發(fā)典型項(xiàng)目:分布式繪圖分布式設(shè)備管理是分布式業(yè)務(wù)入口,在分布式業(yè)務(wù)中對(duì)周邊可信和非可信設(shè)備進(jìn)行統(tǒng)一管理。分布式設(shè)備管理提供如下四大功能:1)發(fā)現(xiàn)發(fā)現(xiàn)周?chē)K端設(shè)備并上報(bào)。周?chē)O(shè)備需要連接同局域網(wǎng)或者同時(shí)打開(kāi)藍(lán)牙,可以根據(jù)設(shè)備類(lèi)型、距離、設(shè)備是否可信等進(jìn)行篩選。2)綁定不同設(shè)備協(xié)同合作完成分布式業(yè)務(wù)的前提是設(shè)備間可信,對(duì)于周邊發(fā)現(xiàn)的不可信設(shè)備,可通過(guò)綁定使彼此建立可信關(guān)系,提供pin碼、碰、掃、靠等設(shè)備認(rèn)證框架,支持對(duì)接各種認(rèn)證交互接口。3)查詢(xún)查詢(xún)功能包含:查詢(xún)本機(jī)設(shè)備信息、查詢(xún)周?chē)脑诰€(xiàn)的可信設(shè)備、查詢(xún)可信設(shè)備信息。4)監(jiān)聽(tīng)監(jiān)聽(tīng)設(shè)備上、下線(xiàn)。設(shè)備上線(xiàn)表示設(shè)備間已經(jīng)可信,業(yè)務(wù)可以發(fā)起分布式操作;設(shè)備下線(xiàn)表示分布業(yè)務(wù)不可用。OpenHarmony北向開(kāi)發(fā)典型項(xiàng)目:分布式繪圖繪圖部分本項(xiàng)目中繪圖所使用的組件主要是canvas畫(huà)布組件,其屬性與html5的canvas畫(huà)布屬性相同,只是在語(yǔ)法上面使用了ArkUI的語(yǔ)法特征。
開(kāi)發(fā)者使用CanvasRenderingContext2D對(duì)象和OffscreenCanvasRenderingContext2D對(duì)象在Canvas組件上進(jìn)行繪制,繪制對(duì)象可以是基礎(chǔ)形狀、文本、圖片等。OffscreenCanvasRenderingContext2D對(duì)象和CanvasRenderingContext2D對(duì)象提供了大量的屬性和方法,可以用來(lái)繪制文本、圖形,處理像素等,是Canvas組件的核心。常用接
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 助理醫(yī)師培訓(xùn)教學(xué)查房
- 助理全科醫(yī)生培訓(xùn)
- 口腔科崗前培訓(xùn)
- 制造業(yè)混料培訓(xùn)
- 制藥變更管理培訓(xùn)
- 口腔護(hù)士禮儀知識(shí)
- 口腔四手操作培訓(xùn)
- 口腔健康知識(shí)教育主題班會(huì)
- 口才班六級(jí)課件
- 護(hù)理課件下載資源
- 量子科普知識(shí)
- 2025至2030中國(guó)航空安全行業(yè)市場(chǎng)深度研究與戰(zhàn)略咨詢(xún)分析報(bào)告
- 華潤(rùn)燃?xì)?026屆校園招聘“菁英計(jì)劃·管培生”全面開(kāi)啟備考考試題庫(kù)及答案解析
- 成本管理論文開(kāi)題報(bào)告
- 華潤(rùn)集團(tuán)6S管理
- 新建粉煤灰填埋場(chǎng)施工方案
- 2025年提高缺氧耐受力食品行業(yè)分析報(bào)告及未來(lái)發(fā)展趨勢(shì)預(yù)測(cè)
- 小學(xué)三年級(jí)數(shù)學(xué)判斷題100題帶答案
- 互聯(lián)網(wǎng)運(yùn)維服務(wù)保障承諾函8篇范文
- 2025年(第十二屆)輸電技術(shù)大會(huì):基于可重構(gòu)智能表面(RIS)天線(xiàn)的相控陣無(wú)線(xiàn)通信技術(shù)及其在新型電力系統(tǒng)的應(yīng)用
- 電力三種人安全培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論