🎯 目标
实现一个图片轮播组件 CommonCarousel
,适用于首页 Banner、广告图、图文展示等场景,支持:
-
自动轮播(定时切换)
-
手势滑动切换
-
底部圆点指示器(可自定义)
-
支持无限循环滚动
-
可设置轮播间隔时间、动画时长、宽高比等
🧱 样式交互示意
[ 🖼 图片1 ] ← 滑动切换
[ ○ ● ○ ○ ] ← 当前第2张
🧰 组件实现:CommonCarousel.ets
@Component
export struct CommonCarousel {
@Prop images: Array<string> = []
@Prop interval: number = 3000 // 自动轮播间隔(ms)
@Prop height: number = 180
@Prop radius: number = 8
@Prop autoPlay: boolean = true
@Prop showIndicator: boolean = true
@State current: number = 0
private timer: number | null = null
aboutToAppear() {
if (this.autoPlay) this.startTimer()
}
aboutToDisappear() {
if (this.timer) clearInterval(this.timer)
}
build() {
Column() {
Swiper({
index: this.current,
autoPlay: this.autoPlay,
inter