鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Image)

Image为图片组件,常用于在应用中显示图片。Image支持加载PixelMapResourceStrDrawableDescriptor类型的数据源,支持png、jpg、jpeg、bmp、svg、webp和gif类型的图片格式。

说明:

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

需要权限

使用网络图片时,需要申请权限ohos.permission.INTERNET。具体申请方式请参考声明权限

子组件

接口

Image(src: PixelMap | ResourceStr | DrawableDescriptor)

通过图片数据源获取图片,用于后续渲染展示。

Image组件加载图片失败或图片尺寸为0时,图片组件大小自动为0,不跟随父组件的布局约束。

从API version 9开始,该接口支持在ArkTS卡片中使用。

参数:

参数名 参数类型 必填 参数描述
src PixelMap | ResourceStrDrawableDescriptor 图片的数据源,支持本地图片和网络图片,引用方式请参考加载图片资源
1. PixelMap格式为像素图,常用于图片编辑的场景。
2. ResourceStr包含Resource和string格式。
string格式可用于加载网络图片和本地图片,常用于加载网络图片。当使用相对路径引用本地图片时,例如Image("common/test.jpg"),不支持跨包/跨模块调用该Image组件,建议使用Resource格式来管理需全局使用的图片资源。
- 支持Base64字符串。格式data:image/[png|jpeg|bmp|webp];base64,[base64 data], 其中[base64 data]Base64字符串数据。
- 支持file://路径前缀的字符串,应用沙箱URI:file://<bundleName>/<sandboxPath>。用于读取本应用安装目录下files文件夹下的图片资源。需要保证目录包路径下的文件有可读权限。
Resource格式可以跨包/跨模块访问资源文件,是访问本地图片的推荐方式。
3. 当传入资源id或name为普通图片时,生成DrawableDescriptor对象。
说明:
- ArkTS卡片上支持gif图片格式动效,但仅在显示时播放一次。
- ArkTS卡片上不支持http://等网络相关路径前缀和file://路径前缀的字符串。
- ArkTS卡片上不支持 PixelMap类型。
- 加载本地图片过程中,如果对图片进行修改或者替换,可能会引起应用崩溃。因此需要覆盖图片文件时,应该先删除该文件再重新创建一个同名文件。
- 网络图片必须支持RFC 9113标准,否则会导致加载失败。

属性

属性的详细使用指导请参考添加属性。除支持通用属性外,还支持以下属性:

名称 参数类型 描述
alt string | Resource 加载时显示的占位图,支持本地图片(png、jpg、bmp、svg和gif类型),不支持网络图片。
默认值:null
从API version 9开始,该接口支持在ArkTS卡片中使用。
objectFit ImageFit 设置图片的填充效果。
默认值:ImageFit.Cover
从API version 9开始,该接口支持在ArkTS卡片中使用。
objectRepeat ImageRepeat 设置图片的重复样式。从中心点向两边重复,剩余空间不足放下一张图片时会截断。
默认值:ImageRepeat.NoRepeat
从API version 9开始,该接口支持在ArkTS卡片中使用。
说明:
svg类型图源不支持该属性。
interpolation
<think>好的,我现在需要帮助用户了解鸿蒙应用开发中Swiper组件的使用方法。用户要求提供教程、示例和说明文档。首先,我应该回忆一下之前提供的引用内容,看看有哪些信息可以利用。 根据引用[1],Swiper是滑动容器,用于切换显示子组件,具体用法可以参考swiper组件的创建。引用[2]提到Swiper的应用场景包括顶部导航、轮播图和视频滑动播放,还提到了相关概念。引用[3]则提供了一个开源组件的链接,可能对用户有帮助。 接下来,我需要整理Swiper组件的基本用法。首先,创建Swiper组件通常需要在布局文件中定义,比如在XML中声明,并设置方向、是否循环等属性。然后,添加子组件,比如Image或其他容器,每个子组件代表一个滑动页面。可能还需要设置自动播放和分页指示点,这些是常见的功能。 示例代码部分,我需要确保语法正确,可能参考鸿蒙的官方文档结构。例如,展示一个轮播图的XML布局,包含Swiper及其子Image组件,以及分页指示器。另外,JavaScript或ArkTS的逻辑部分,比如动态加载数据或者处理滑动事件,也可能需要说明。 注意事项方面,要提到性能优化,比如避免过多子组件影响渲染效率,以及手势冲突的处理。同时,引用提供的开源组件作为扩展学习的资源,可能对用户有帮助。 现在需要检查是否有遗漏点,比如Swiper的常用属性有哪些?方向设置(水平或垂直)、循环模式、持续时间、分页器样式等。可能还需要说明如何通过代码动态修改这些属性,或者响应滑动事件。 另外,用户可能需要知道如何与其他组件结合使用,比如在Swiper内部嵌套List或Grid,但需要注意手势冲突的问题。引用[2]提到的顶部导航和视频滑动播放,可能需要更复杂的实现,但基础教程中可能先聚焦在轮播图这样的简单案例。 最后,生成相关问题,要围绕Swiper组件的属性、优化、应用场景和问题排查,确保问题覆盖用户可能遇到的后续疑问。</think>### HarmonyOS Swiper 组件使用教程 #### 一、基础用法 Swiper 是鸿蒙开发中常用的滑动容器组件,支持水平/垂直方向滑动切换子组件。以下是实现轮播图的示例: ```xml <!-- XML布局 --> <Swiper ohos:id="$+id:swiper" ohos:height="200vp" ohos:width="match_parent" ohos:orientation="horizontal" ohos:loop="true" ohos:auto_play="true" ohos:interval="3000"> <Image ohos:image_src="$media:img1" ohos:scale_mode="zoom_center"/> <Image ohos:image_src="$media:img2" ohos:scale_mode="zoom_center"/> </Swiper> <!-- 分页指示器 --> <PageSliderIndicator ohos:top_margin="10vp" ohos:alignment="center" ohos:page_slider_id="$id:swiper"/> ``` #### 二、动态加载数据(ArkTS示例) ```typescript // 动态绑定数据 @Entry @Component struct SwiperExample { private swiperController: SwiperController = new SwiperController() private imgList: string[] = ['img1', 'img2', 'img3'] build() { Column() { Swiper(this.swiperController) { ForEach(this.imgList, (item: string) => { Image($r(`app.media.${item}`)) .objectFit(ImageFit.Cover) }) } .autoPlay(true) .interval(3000) .indicator(new PageSliderIndicator()) } } } ``` #### 三、核心属性说明 | 属性 | 类型 | 说明 | |------|------|------| | orientation | enum | 滑动方向(horizontal/vertical)| | loop | boolean | 是否循环播放[^1] | | duration | number | 滑动动画时长(ms)| | index | number | 初始显示页索引 | | auto_play | boolean | 自动播放开关[^2] | #### 四、高级功能实现 1. **嵌套复杂组件**:可在 Swiper 内嵌套 Stack/Column 等容器 ```xml <Swiper> <Stack> <Image.../> <Text.../> </Stack> </Swiper> ``` 2. **手势事件处理**: ```typescript Swiper() .onGestureSwipe((event: GestureEvent) => { console.log(`滑动方向:${event.direction}`) }) ``` #### 五、注意事项 1. 避免在单个 Swiper 中加载超过 5 个子组件,建议使用懒加载[^3] 2. 当嵌套 List 组件时,需设置 `ohos:rebound_effect="false"` 3. 垂直滑动时需确保父容器有固定高度
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值