XComponent
可用于EGL/OpenGLES和媒體數據寫入,并顯示在XComponent組件。
說明:
開發前請熟悉鴻蒙開發指導文檔 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md
]
該組件從API Version 11 開始支持跨平臺。后續版本如有新增內容,則采用上角標單獨標記該內容的起始版本。
子組件
接口
XComponent
XComponent(value: {id: string, type: string, libraryname?: string, controller?: XComponentController})
參數:
參數名 | 參數類型 | 必填 | 描述 |
---|---|---|---|
id | string | 是 | 組件的唯一標識,支持最大的字符串長度128。 |
type | string | 是 | 用于指定XComponent組件類型,可選值僅有兩個為: -"surface":用于EGL/OpenGLES和媒體數據寫入,開發者定制的繪制內容單獨展示到屏幕上。 -"component"9+ :XComponent將變成一個容器組件,并可在其中執行非UI邏輯以動態加載顯示內容。 其他值均會被視為"surface"類型 |
liaryname | string | 否 | 應用Native層編譯輸出動態庫名稱,僅XComponent類型為"surface"時有效。 |
controller | [XComponentcontroller] | 否 | 給組件綁定一個控制器,通過控制器調用組件方法,僅XComponent類型為"surface"時有效。 |
XComponent
XComponent(value: {id: string, type: XComponentType, libraryname?: string, controller?: XComponentController})
參數:
參數名 | 參數類型 | 必填 | 描述 |
---|---|---|---|
id | string | 是 | 組件的唯一標識,支持最大的字符串長度128。 |
type | XComponentType | 是 | 用于指定XComponent組件類型(跨平臺僅支持SURFACE,COMPONENT)。 |
liaryname | string | 否 | 用Native層編譯輸出動態庫名稱,僅類型為SURFACE或TEXTURE時有效。 |
controller | [XComponentcontroller] | 否 | 給組件綁定一個控制器,通過控制器調用組件方法,僅類型為SURFACE或TEXTURE時有效。 |
XComponentType枚舉說明
名稱 | 描述 |
---|---|
SURFACE | 用于EGL/OpenGLES和媒體數據寫入,開發者定制的繪制內容單獨展示到屏幕上。 |
COMPONENT | XComponent將變成一個容器組件,并可在其中執行非UI邏輯以動態加載顯示內容。 |
TEXTURE | 用于EGL/OpenGLES和媒體數據寫入,開發者定制的繪制內容會和XComponent組件的內容合成后展示到屏幕上(跨平臺暫不支持)。 |
說明:
type為COMPONENT("component")時,XComponent作為容器,子組件沿垂直方向布局:
- 垂直方向上對齊格式:[FlexAlign].Start
- 水平方向上對齊格式:[FlexAlign].Center
所有的事件響應均不支持。
布局方式更改和事件響應均可通過掛載子組件來設置。
內部所寫的非UI邏輯需要封裝在一個或多個函數內。
屬性
- XComponent顯示的內容,可由開發者自定義繪制,通用屬性中的[背景設置]、[透明度設置]和[圖像效果]按照type類型有限支持。
- type為SURFACE("surface")時僅支持[圖像效果]中的shadow屬性,建議使用EGL/OpenGLES提供的接口設置相關內容。
說明:
從API version 11開始,type為SURFACE("surface")時支持[背景顏色設置]
- type為COMPONENT("component")時僅支持[圖像效果]中的shadow屬性,建議使用掛載子組件的方式進行設置相關內容。
事件
僅type為SURFACE("surface")或TEXTURE時以下事件有效。不支持[通用事件]
onLoad
onLoad(callback: (event?: object) => void )
插件加載完成時回調事件。
參數:
參數名 | 參數類型 | 必填 | 描述 |
---|---|---|---|
event | object | 否 | 獲取XComponent實例對象的context,context上掛載的方法由開發者在c++層定義。 |
onDestroy
onDestroy(event: () => void )
插件卸載完成時回調事件。
XComponentController
xcomponent 組件的控制器,可以將此對象綁定至XComponent組件,然后通過控制器來調用組件方法。
創建對象
xcomponentController: XComponentController = new XComponentController()
getXComponentSurfaceId
getXComponentSurfaceId(): string
獲取XComponent對應Surface的ID,僅XComponent類型為SURFACE("surface")或TEXTURE時有效。
返回值:
類型 | 描述 |
---|---|
string | XComponent持有Surface的ID。 |
setXComponentSurfaceSize(deprecated)
setXComponentSurfaceSize(value: {surfaceWidth: number, surfaceHeight: number}): void
設置XComponent持有Surface的寬度和高度,僅XComponent類型為SURFACE("surface")或TEXTURE時有效。
該接口從API Version 12開始廢棄。
參數:
參數名 | 參數類型 | 必填 | 描述 |
---|---|---|---|
surfaceWidth | number | 是 | XComponent持有Surface的寬度。 |
surfaceHeight | number | 是 | XComponent持有Surface的高度。 |
getXComponentContext
getXComponentContext(): Object
獲取XComponent實例對象的context,僅XComponent類型為SURFACE("surface")或TEXTURE時有效。
返回值:
類型 | 描述HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿 |
---|---|
Object | 獲取XComponent實例對象的context,context包含的具體接口方法由開發者自定義,context內容與onLoad回調中的第一個參數一致。 |
示例效果請以真機運行為準,當前IDE預覽器不支持。
// xxx.ets
@Entry
@Component
struct PreviewArea {
private surfaceId: string = ''
private xComponentContext: Record< string, () = > void > = {}
xComponentController: XComponentController = new XComponentController()
build() {
Column() {
Text(JSON.stringify(this.rect))
.fontSize(12)
XComponent({
id: 'xcomponent',
type: XComponentType.SURFACE,
controller: this.xComponentController
})
.onLoad(() = > {
this.surfaceId = this.xComponentController.getXComponentSurfaceId()
this.xComponentContext = this.xComponentController.getXComponentContext() as Record< string, () = > void >
})
.width('640px')
.height('480px')
}
.position({ x: 0, y: 48 })
}
}
審核編輯 黃宇
-
組件
+關注
關注
1文章
505瀏覽量
17802 -
鴻蒙
+關注
關注
57文章
2309瀏覽量
42740
發布評論請先 登錄
相關推薦
評論