普宁做男科检查长江网站L江苏省建设厅网站官网
- 作者: 五速梦信息网
- 时间: 2026年03月21日 10:12
当前位置: 首页 > news >正文
普宁做男科检查长江网站L,江苏省建设厅网站官网,网站建设步奏,分红盘网站开发多少钱HarmonyOS NEXT零基础入门到实战-第二部分 Swiper 轮播组件 Swiper是一个 容器 组件#xff0c;当设置了多个子组件后#xff0c;可以对这些 子组件 进行轮播显示。#xff08;文字、图片…#xff09; 1、Swiper基本语法 2、Swiper常见属性 3、Swiper样式自定义 4、案例当设置了多个子组件后可以对这些 子组件 进行轮播显示。文字、图片… 1、Swiper基本语法 2、Swiper常见属性 3、Swiper样式自定义 4、案例小米有品 5、作业手机淘宝 Swiper相关源代码 Entry Component struct Index { build() { Column() { // Swiper 包内容设尺寸 Swiper() { Text(1) .backgroundColor(Color.Orange) Text(2) .backgroundColor(Color.Yellow) Text(3) .backgroundColor(Color.Brown) } .width(100%) // .height(300) .aspectRatio(2.4) // 设置和图片一致的宽高比保证图片正常适配 // 常见属性 .loop(true) // 开启循环 .autoPlay(true) // 自动播放默认3s .interval(5000) // 自动轮播间隔 .vertical(false) // 横向/纵向 // 定制小圆点 // .indicator(false) .indicator( Indicator.dot() // 小圆点 .itemWidth(10) // 默认的宽 .itemHeight(5) // 默认的高 // .color(Color.Gray) // 默认的颜色 .selectedItemWidth(30) // 选中的宽 .selectedItemHeight(5) // 选中的高 .selectedColor(Color.White) // 选中的颜色 ) Swiper() { Image(\(r(app.media.hw)) .objectFit(ImageFit.Cover) Image(\)r(app.media.pg)) .objectFit(ImageFit.Cover) Image(\(r(app.media.xm)) .objectFit(ImageFit.Cover) } .width(100%) .height(300) .loop(true) // 开启循环 .autoPlay(true) // 自动播放默认3s .interval(5000) // 自动轮播间隔 } } } 样式结构重用 Extend扩展组件样式、事件 比如 Extend(Text) function bannerItem(bgColor: ResourceColor, msg: string) { .fontSize(30) .fontColor(Color.White) .backgroundColor(bgColor) .textAlign(TextAlign.Center) .onClick(() { AlertDialog.show({ message: msg }) }) } Swiper() { Text(1) .bannerItem(Color.Orange, 轮播图 1) Text(2) .bannerItem(Color.Brown, 轮播图 2) Text(3) .bannerItem(Color.Green, 轮播图 3) } Styles:抽取通用属性、事件 针对所有组件的公有属性比如说宽高、背景色、点击事件等Styles不支持传参 1、全局定义不支持this.调用 Styles function commonStyles() { .width(100) .height(100) .onClick(() { ... }) } 2、在组件内定义省略function 才能通过this访问到自己的状态 这种使用相对全局使用较多 Styles setBg() { .backgroundColor(Color.Red) } Builder:自定义构建函数结构、样式、事件 // 全局 Builder Builder function navItem(icon: ResourceStr, txt: string) { Column({space: 10}) { Image(icon) .width(80%) Text(txt) } .width(25%) .onClick(() { AlertDialog.show({ message: 点了 txt }) }) } Entry Component struct Index { State builderStr: string Builder // 局部builder 只能定义在组件内 this.xxx Builder navItem(icon: ResourceStr, txt: string) { Column({space: 10}) { Image(icon) .width(80%) Text(txt) } .width(25%) .onClick(() { AlertDialog.show({ message: 点了 txt this.builderStr }) }) } build() { Column() { Row() { navItem(\)r(app.media.xm), 小米手机) navItem(\(r(app.media.hw), 华为手机) this.navItem(\)r(app.media.pg), 苹果手机) } } } } 总结 Extend 抽取 特定组件 样式、事件 可以传递参数 Styles 抽取 公共样式、事件 不可以传递参数 Builder 抽取结构、样式、事件 可以传递参数 滚动容器Scroll 当子组件的布局尺寸超过Scroll的尺寸时内容可以滚动 学习目录 1、Scroll 的核心用法 2、Scroll 的常见属性 3、Scroll 的控制器 4、Scroll 的事件 5、案例京东案例实战 源代码 Entry Component struct Index { build() { Column() { // 如果希望内容溢出能够滚动 Scroll() { Column({space: 10}) { ForEach(Array.from({length: 10}), (item: string, index: number) { Text(测试文本 (index 1)) .width(100%) .height(100) .textAlign(TextAlign.Center) .backgroundColor(Color.Orange) .fontSize(20) .fontColor(Color.White) .borderRadius(20) }) } .padding(10) .width(100%) } // .scrollable(ScrollDirection.Horizontal) // .scrollBar(BarState.Auto) // .scrollBarColor(Color.Blue) // .scrollBarWidth(5) .edgeEffect(EdgeEffect.Spring) // 滑动效果弹簧 } .width(100%) .height(200) } } Scroll的控制器 核心步骤 1、实例化 Scroller 的控制器 2、绑定给 Scroll 组件 3、控制器的方法 控制滚动 控制器属性 获取滚动距离 Scroll 事件 Scroll 组件提供了一些事件让开发者可以在适当的时候添加逻辑 Scroll(){ } .onScroll((x, y) { // 滚动时一直触发 可以结合 scroller的currentOffset方法 获取滚动距离 }) .onWillScroll((offset: number) { console.log(onWillScroll 已经滑动的距离, this.myScroller.currentOffset().yOffset offset) }) .onScroll((x, y) { console.log(onScroll 已经滑动的距离, this.myScroller.currentOffset().yOffset) }) 滚动容器Scroll - 京东案例实战 需求说明: 1、点击火箭回到顶部 2、火箭显示效果切换 2.1 默认隐藏 2.2 超过400 —-显示反之—隐藏 State yOffset : number 0; .onScroll((x, y) { yOffset this.myScroller.currentOffset().yOffset }) if(yOffset 400) { // 渲染 } 源代码 Entry Component struct Index { // 1、创建 Scroller 对象实例化 myScroller: Scroller new Scroller() build() { Column() { // 如果希望内容溢出能够滚动 // 2、绑定给 Scroll 组件 Scroll(this.myScroller) { Column({space: 10}) { ForEach(Array.from({length: 10}), (item: string, index: number) { Text(测试文本 (index 1)) .width(100%) .height(100) .textAlign(TextAlign.Center) .backgroundColor(Color.Orange) .fontSize(20) .fontColor(Color.White) .borderRadius(20) }) } .padding(10) .width(100%) } .width(100%) .height(400) // .scrollable(ScrollDirection.Horizontal) // .scrollBar(BarState.Auto) // .scrollBarColor(Color.Blue) // .scrollBarWidth(5) .edgeEffect(EdgeEffect.Spring) // 滑动效果弹簧 .onWillScroll((offset: number) { console.log(onWillScroll 已经滑动的距离, this.myScroller.currentOffset().yOffset offset) }) .onScroll((x, y) { console.log(onScroll 已经滑动的距离, this.myScroller.currentOffset().yOffset) }) Button(控制滚动条位置).margin(20) .onClick(() { this.myScroller.scrollEdge(Edge.Top) // 会滚动顶部 }) Button(获取已经滚动的距离) .onClick(() { const y this.myScroller.currentOffset().yOffset AlertDialog.show({ message: y:\({y} }) }) } } } 容器组件 Tabs 当页面内容较多时可以通过Tabs组件进行 分类展示 学习目录 1、Tabs 基本用法 2、Tabs 常见属性 3、滚动导航栏 4、自定义TabBar 5、案例 小米有品底部Tabs 源代码 Entry Component struct Index { titles: string[] [ 首页, 关注, 热门, 军事,体育, 八卦, 数码, 财经, 美食,旅行 ] build() { Column() { // 调整位置 顶部或者底部参数 Tabs({barPosition: BarPosition.Start}) { ForEach(this.titles, (item: string, index) { TabContent() { Text(\){item}内容) } .tabBar(item) }) } .vertical(false) // 调整导航水平或者垂直 .scrollable(true) // 是否开启手势滑动 .animationDuration(0) // 点击滑动动画时间 .barMode(BarMode.Scrollable) // 滚动导航栏 } } } 自定义的TabBar 1、基础结构 2、高亮切换 源代码 Entry Component struct Index { // 准备状态存储激活的索引 State selectedIndex: number 0; build() { // 调整位置 顶部或者底部参数 Tabs({barPosition: BarPosition.End}) { TabContent() { Text(购物车) } .tabBar(this.myBuilder(0, 购物车, \(r(app.media.startIcon), \)r(app.media.xm))) TabContent() { Text(我的) } .tabBar(this.myBuilder(1, 我的, \(r(app.media.startIcon), \)r(app.media.hw))) } // .vertical(false) // 调整导航水平或者垂直 // .scrollable(true) // 是否开启手势滑动 // .animationDuration(0) // 点击滑动动画时间 // .barMode(BarMode.Scrollable) // 滚动导航栏 .onChange((index: number) { this.selectedIndex index }) } Builder myBuilder(itemIndex: number,title: string, img: ResourceStr, selectedImg: ResourceStr) { Column() { Image(itemIndex this.selectedIndex ? selectedImg : img) .width(30) Text(title) .fontColor(itemIndex this.selectedIndex ? Color.Red : Color.Black) } } } 案例 小米有品底部Tabs 实现思路 1、基础结构 2、高亮控制 3、中间特殊结构 源代码 Entry Component struct Index { // 准备状态存储激活的索引 State selectedIndex: number 0; build() { // 调整位置 顶部或者底部参数 Tabs({barPosition: BarPosition.End}) { TabContent() { Text(购物车) } .tabBar(this.myBuilder(0, 购物车, \(r(app.media.startIcon), \)r(app.media.xm))) // 特殊形状的Tab TabContent(){ Text(活动内容) } .tabBar(this.centerBuilder()) TabContent() { Text(我的) } .tabBar(this.myBuilder(2, 我的, \(r(app.media.startIcon), \)r(app.media.hw))) } // .vertical(false) // 调整导航水平或者垂直 // .scrollable(true) // 是否开启手势滑动 // .animationDuration(0) // 点击滑动动画时间 // .barMode(BarMode.Scrollable) // 滚动导航栏 .onChange((index: number) { this.selectedIndex index }) } Builder myBuilder(itemIndex: number,title: string, img: ResourceStr, selectedImg: ResourceStr) { Column() { Image(itemIndex this.selectedIndex ? selectedImg : img) .width(30) Text(title) .fontColor(itemIndex this.selectedIndex ? Color.Red : Color.Black) } } Builder centerBuilder() { Image($r(app.media.pg)) .width(30) .height(30) .margin({bottom: 20}) } }
- 上一篇: 浦口区网站建设及推广wordpress打开html文件下载
- 下一篇: 普拓网站建设全网推广服务
相关文章
-
浦口区网站建设及推广wordpress打开html文件下载
浦口区网站建设及推广wordpress打开html文件下载
- 技术栈
- 2026年03月21日
-
浦口国家建设部网站站长忽略的观点
浦口国家建设部网站站长忽略的观点
- 技术栈
- 2026年03月21日
-
浦江县做网站成都网站制作是什么
浦江县做网站成都网站制作是什么
- 技术栈
- 2026年03月21日
-
普拓网站建设全网推广服务
普拓网站建设全网推广服务
- 技术栈
- 2026年03月21日
-
普通的订阅号怎么做微网站app 网站开发
普通的订阅号怎么做微网站app 网站开发
- 技术栈
- 2026年03月21日
-
普通网站 seo 多少钱昆山网站制作公司
普通网站 seo 多少钱昆山网站制作公司
- 技术栈
- 2026年03月21日






