js-components-basic-xcomponent.md 3.2 KB
Newer Older
Z
zzzsilenc 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
# xcomponent

  > **说明:**
  > 该组件从API Version 9 开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。

  用于显示写入了EGL/OpenGLES或媒体数据的组件。

## 权限列表



## 子组件

  不支持。

## 属性

除支持[通用属性](js-components-common-attributes.md)外,还支持如下属性:

H
geshi  
HelloCrease 已提交
20 21 22 23 24
| 名称          | 参数类型   | 必填   | 描述                                       |
| ----------- | ------ | ---- | ---------------------------------------- |
| id          | string | 是    | 组件的唯一标识,支持最大的字符串长度128。                   |
| type        | string | 是    | 用于指定xcomponent组件类型,可选值为:<br/>- surface:组件内容单独送显,直接合成到屏幕。<br/>- component:组件内容与其他组件合成后统一送显。<br/> |
| libraryname | string | 否    | 应用Native层编译输出动态库名称。                      |
Z
zzzsilenc 已提交
25 26 27 28 29 30 31 32 33

## 样式

支持[通用样式](js-components-common-styles.md)

## 事件

除支持[通用事件](js-components-common-events.md)外,还支持如下事件:

H
geshi  
HelloCrease 已提交
34 35
| 名称                               | 功能描述                                     |
| -------------------------------- | ---------------------------------------- |
Z
zzzsilenc 已提交
36
| onLoad(context?: object) => void | 插件加载完成时回调事件。<br/>context:开发者扩展的xcomponent方法的实例对象,context对象的接口由开发者自定义。 |
H
geshi  
HelloCrease 已提交
37
| onDestroy() => void              | 插件卸载完成时回调事件。                             |
Z
zzzsilenc 已提交
38 39 40 41 42

## 方法

除支持[通用方法](js-components-common-methods.md)外,还支持如下方法:

H
geshi  
HelloCrease 已提交
43 44 45 46 47
| 名称                       | 参数                                       | 返回值类型  | 描述                                       |
| ------------------------ | ---------------------------------------- | ------ | ---------------------------------------- |
| getXComponentSurfaceId   | -                                        | string | 获取xcomponent对应Surface的ID,供@ohos接口使用,比如camera相关接口。 |
| setXComponentSurfaceSize | {<br/>surfaceWidth: number,<br/>surfaceHeight: number  <br/>} | -      | 设置xcomponent持有Surface的宽度和高度。             |
| getXComponentContext     | -                                        | object | 获取开发者扩展的xcomponent方法的实例对象。               |
Z
zzzsilenc 已提交
48 49 50 51 52

## 示例

提供surface类型xcomponent,支持相机预览等能力。

H
geshi  
HelloCrease 已提交
53
   ```html
Z
zzzsilenc 已提交
54 55 56 57 58 59 60
<!-- xxx.hml -->
<div style="height: 500px; width: 500px; flex-direction: column; justify-content: center; align-items: center;">
	<text id = 'camera' class = 'title'>camera_display</text>
	<xcomponent id = 'xcomponent' type = 'surface' onload = 'onload' ondestroy = 'ondestroy'></xcomponent>
</div>
   ```

H
geshi  
HelloCrease 已提交
61
   ```js
Z
zzzsilenc 已提交
62 63 64 65 66 67 68 69 70 71 72
// xxx.js
import camera from '@ohos.multimedia.camera';
export default {
    onload() {
        var surfaceId = this.$element('xcomponent').getXComponentSurfaceId();
        camera.createPreviewOutput(surfaceId).then((previewOutput) => {
            console.log('Promise returned with the PreviewOutput instance');
        })
    }
}
   ```