LiveViewCardExtensionAbility为实况窗卡片自定义扩展区的ExtensionAbility组件,适用于需要在扩展区展示自定义丰富内容的实时活动场景。开发者通过继承该类并实现应用的扩展组件,可以在实况窗扩展区呈现开发者自定义的内容。
起始版本: 26.0.0
LiveViewCardExtensionAbility为独立子进程,不能跨进程拉起其他Ability。
不允许访问网络。
该ExtensionAbility每次的运行时长限制在80毫秒内,超时会导致实况卡片自定义扩展区无法正常展示,因此禁止用于复杂耗时的处理。
为保障系统安全性和稳定性,防止LiveViewCardExtensionAbility滥用系统资源,系统对其能力进行管控,不支持部分模块的引用,详情请参考附录。
import { LiveViewCardExtensionAbility } from '@kit.LiveViewKit'; 设备行为差异: 该模块在Phone、Tablet中可正常调用,在其他设备类型中无效果。
模型约束: 属性仅可在Stage模型下使用。
系统能力: SystemCapability.LiveView.LiveViewService
设备行为差异: 该接口在Phone、Tablet中可正常调用,在其他设备类型中无效果。
起始版本: 26.0.0
| 名称 | 类型 | 只读 | 可选 | 说明 |
|---|---|---|---|---|
| context | LiveViewCardExtensionContext | 否 | 否 | LiveViewCardExtensionAbility的上下文环境,继承自ExtensionContext。 |
onRender(param: Record<string, string>): CardInfo
开发者继承LiveViewCardExtensionAbility并实现自身的组件,当组件实例被系统加载时,系统会触发该回调。开发者可以在onRender中实现实况窗卡片扩展区的业务逻辑和界面组件绘制,并返回要加载的CardInfo给系统,由系统渲染页面。
模型约束: 此接口仅可在Stage模型下使用。
系统能力: SystemCapability.LiveView.LiveViewService
设备行为差异: 该接口在Phone、Tablet中可正常调用,在其他设备类型中无效果。
起始版本: 26.0.0
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| param | Record<string, string> | 是 | 开发者创建实况窗卡片自定义扩展区时传入的参数CustomLayout.abilityParameters 默认会携带以下key值(由系统赋值,开发者手动修改也不会生效): 'ohos.extra.param.key.colorMode':实况卡片深浅色模式(dark:深色模式;light:浅色模式) 'ohos.extra.param.key.fontColor':实况卡片字体颜色("#ARGB"16进制格式,长度为9) 'ohos.extra.param.key.contentWidth':实况窗卡片的宽度,单位为vp(自定义扩展区左右边界距离实况窗卡片边界各为12vp,即自定义扩展区宽度=实况窗卡片宽度-12*2)。 |
返回值:
| 类型 | 说明 |
|---|---|
| CardInfo | 卡片渲染信息对象。 |
onRender函数接口返回的卡片渲染信息对象。
模型约束: 此属性仅可在Stage模型下使用。
系统能力: SystemCapability.LiveView.LiveViewService
设备行为差异: 该接口在Phone、Tablet中可正常调用,在其他设备类型中无效果。
起始版本: 26.0.0
| 名称 | 类型 | 只读 | 可选 | 说明 |
|---|---|---|---|---|
| pagePath | string | 否 | 否 | 待加载到系统中的扩展区域页面的路径,系统将渲染该页面。 |
| storage | LocalStorage | 否 | 是 | 页面级UI状态存储单元,用于传递pagePath内容的状态属性。 |
import { LiveViewCardExtensionAbility } from '@kit.LiveViewKit';
import { CardInfo } from '@hms.core.liveview.LiveViewCardExtensionAbility';
import { hilog } from '@kit.PerformanceAnalysisKit';
export default class LiveViewCardExtAbility extends LiveViewCardExtensionAbility {
onRender(param: Record<string, string>): CardInfo {
hilog.info(0x0000, 'LiveViewCardTag', 'LiveViewCardExtAbility onRender begin.');
// 将param的参数构造到LocalStorage传递给页面使用。
const storage = new LocalStorage(param);
// 加载实况窗卡片自定义扩展区页面
return {
pagePath: 'pages/LiveViewCardPage',
storage: storage
}
}
} @Entry({ useSharedStorage: true })
@Component
struct LiveViewCardPage {
private storage: LocalStorage | undefined = this.getUIContext().getSharedLocalStorage();
// 获取从AbilityParameters中传入的参数
private words: string | undefined = this.storage?.get('words');
// 解析获取系统实况窗卡片自定义扩展区的宽度、深浅色模式、字体颜色
private contentWidth: string | undefined = this.storage?.get('ohos.extra.param.key.contentWidth');
private colorMode: string | undefined = this.storage?.get('ohos.extra.param.key.colorMode');
private fontColor: string | undefined = this.storage?.get('ohos.extra.param.key.fontColor');
getFontColor(): string {
// 开发者可以根据深浅色模式自定义字体颜色。也可以使用默认的字体颜色。
let color = this.fontColor as string; // 默认的字体颜色。使用默认的字体颜色时,需要删掉下方根据colorMode进行判断的逻辑。
// 根据colorMode的值,自定义字体颜色。
if (this.colorMode == 'dark') {
// 深色模式场景下,开发者根据业务自行定义字体颜色,以下示例中字体颜色为红色。
color = '#FFFF3300';
} else if (this.colorMode == 'light') {
// 浅色模式场景下,开发者根据业务自行定义字体颜色,以下示例中字体颜色为绿色。
color = '#FF33CC66';
}
return color;
}
build() {
Column() {
Scroll() {
Column() {
Text(this.words)
.fontColor(this.getFontColor())
}
.width(this.contentWidth)
}
}
}
} LiveViewCardExtensionAbility不允许调用的API名单如下。