回复
#星计划# HarmonyOS组件介绍-Swiper 原创
左翼风发
发布于 2023-12-28 22:22
浏览
0收藏
背景
当我们浏览网站,相册,购物应用时,会发现有些图片会不断变化的,如图:
这个对应HarmonyOS应用开发就需要我们用到Swiper组件,本篇我们就此组件进行介绍。
Swiper组件介绍
1,滑块视图容器,提供子组件滑动轮播显示的能力。
该组件从API Version 7开始支持。官方doc地址:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V2/ts-container-swiper-0000001427744844-V2
简单解读
-
接口
Swiper(controller?: SwiperController)
-
参数
参数名 | 参数类型 | 必填项 | 参数描述 |
---|---|---|---|
callback | () => void | 否 | 动画结束的回调。 |
- 事件
名称 | 功能描述 |
---|---|
onChange(event: (index: number) => void) | 当前显示的子组件索引变化时触发该事件,返回值为当前显示的子组件的索引值。 - index:当前显示元素的索引。 说明: Swiper组件结合LazyForEach使用时,不能在onChange事件里触发子页面UI的刷新。 |
onAnimationStart9+(event: (index: number) => void) | 切换动画开始时触发该回调。 - index:当前显示元素的索引。 说明: 参数为动画开始前的index值(不是最终结束动画的index值),多列Swiper时,index为最左侧组件的索引。 |
onAnimationEnd9+(event: (index: number) => void) | 切换动画结束时触发该回调。 - index:当前显示元素的索引。 说明: 当Swiper切换动效结束时触发,包括动画过程中手势中断,通过SwiperController调用finishAnimatio。参数为动画结束后的index值,多列Swiper时,index为最左侧组件的索引。 |
代码示例
class MyDataSource implements IDataSource {
private list: number[] = []
private listener: DataChangeListener
constructor(list: number[]) {
this.list = list
}
totalCount(): number {
return this.list.length
}
getData(index: number): any {
return this.list[index]
}
registerDataChangeListener(listener: DataChangeListener): void {
this.listener = listener
}
unregisterDataChangeListener() {
}
}
@Entry
@Component
struct SwiperExample {
private swiperController: SwiperController = new SwiperController()
private data: MyDataSource = new MyDataSource([])
private colist: string[] = [
"#5C2223", "#EEA2A4", "#5A191B", "#E07C82", "#5A1216", "#ED5A65",
"#C04851", "#EE3E4D", "#C02C38", "#A7535A", "#E3B4B8", "#EOA1A8",
]
aboutToAppear(): void {
let list = []
for (var i = 1; i <= 10; i++) {
list.push(i.toString());
}
this.data = new MyDataSource(list)
}
build() {
Column({ space: 5 }) {
Swiper(this.swiperController) {
LazyForEach(this.data, (item: string) => {
Text(item).width('90%').height(160).backgroundColor(this.colist[Number(item)]).textAlign(TextAlign.Center).fontSize(30)
}, item => item)
}
.cachedCount(2)
.index(1)
.autoPlay(true)
.interval(4000)
.indicator(true)
.loop(true)
.duration(1000)
.itemSpace(0)
.curve(Curve.Linear)
.onChange((index: number) => {
console.info(index.toString())
})
}.width('100%')
.margin({ top: 5 })
}
}
此用例可以自动滑动图片,进行滚动播放,当然也可以结合之前介绍的waterflow,容器叠加实现更高级的功能
©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
swiper.rar 264.54K 12次下载
赞
收藏
回复
相关推荐