鸿蒙开发-UI-布局-轮播

鸿蒙开发-UI-布局

鸿蒙开发-UI-布局-线性布局

鸿蒙开发-UI-布局-层叠布局

鸿蒙开发-UI-布局-弹性布局

鸿蒙开发-UI-布局-相对布局

鸿蒙开发-UI-布局-格栅布局

鸿蒙开发-UI-布局-列表

鸿蒙开发-UI-布局-网格

文章目录

前言

一、基本概念

二、开发布局

三、应用特性

1.循环播放

2.自动轮播

3.导航点样式

4.页面切换方式

5.轮播方向

6.每页显示多个子页面

总结


前言

上文详细学习了网格布局相关概念,以及网格布局的相关约束,详细学习了网格布局排列方式以及网格行列间距的设置,了解了网格布局常用的使用场景以及性能优化。本文将学习轮播布局。

一、基本概念

Swiper组件是一个容器组件,提供滑动轮播显示的能力。当设置了多个子组件后,可以对这些子组件进行轮播显示。通常,在一些应用首页显示推荐的内容时,需要用到轮播显示的能力。

二、开发布局

Swiper容器组件未设置尺寸属性时,会自动根据子组件的大小设置其尺寸。

Swiper组件设置了固定的尺寸,则在轮播显示过程中均以该尺寸生效。

三、应用特性

1.循环播放

通过loop属性控制是否循环播放,该属性默认值为true

当loop为true时,在显示第一页或最后一页时,可以继续往前切换到前一页或者往后切换到后一页。如果loop为false,则在第一页或最后一页时,无法继续向前或者向后切换页面。

//step1:定义轮播控制器
private swiperController: SwiperController = new SwiperController()
...
Swiper(this.swiperController) {
  Text("0")
    .width('90%')
    .height('100%')
    .backgroundColor(Color.Gray)
    .textAlign(TextAlign.Center)
    .fontSize(30)

  Text("1")
    .width('90%')
    .height('100%')
    .backgroundColor(Color.Green)
    .textAlign(TextAlign.Center)
    .fontSize(30)

}
.loop(true) //注:设置loop属性为true,轮播可以循环播放

2.自动轮播

Swiper通过设置autoPlay属性,控制是否自动轮播子组件。该属性默认值为false

autoPlay为true时,会自动切换播放子组件,子组件与子组件之间的播放间隔通过interval属性设置。interval属性默认值为3000,单位毫秒

Swiper(this.swiperController) {
  Text("0")
    .width('90%')
    .height('100%')
    .backgroundColor(Color.Gray)
    .textAlign(TextAlign.Center)
    .fontSize(30)

  Text("1")
    .width('90%')
    .height('100%')
    .backgroundColor(Color.Green)
    .textAlign(TextAlign.Center)
    .fontSize(30)

  Text("2")
    .width('90%')
    .height('100%')
    .backgroundColor(Color.Pink)
    .textAlign(TextAlign.Center)
    .fontSize(30)
}
.loop(true)
.autoPlay(true) //注:设置自动轮播
.interval(1000)//注:设置自动播放时间间隔1000ms

3.导航点样式

Swiper提供了默认的导航点样式,导航点默认显示在Swiper下方居中位置,开发者也可以通过indicatorStyle属性自定义导航点的位置和样式。

通过indicatorStyle属性,开发者可以设置导航点相对于Swiper组件上下左右四个方位的位置,同时也可以设置每个导航点的尺寸、颜色、蒙层和被选中导航点的颜色。

Swiper(this.swiperController) {
  Text("0")
    .width('90%')
    .height('100%')
    .backgroundColor(Color.Gray)
    .textAlign(TextAlign.Center)
    .fontSize(30)

  Text("1")
    .width('90%')
    .height('100%')
    .backgroundColor(Color.Green)
    .textAlign(TextAlign.Center)
    .fontSize(30)

  Text("2")
    .width('90%')
    .height('100%')
    .backgroundColor(Color.Pink)
    .textAlign(TextAlign.Center)
    .fontSize(30)
}
.indicatorStyle({
  size: 30,
  left: 0,
  color: Color.Red
})

如上代码所示,自定义导航点样式,导航点直径设为30VP,左边距为0,导航点颜色设为红色

4.页面切换方式

Swiper支持三种页面切换方式:手指滑动、点击导航点和通过控制器。

以控制器切换为例说明:

@Entry
@Component
struct SwiperDemo {
//step1:定义轮播控制器
  private swiperController: SwiperController = new SwiperController();

  build() {
//step2:定义UI描述,Column容器中第一子组件Swiper,第二个子组件Row容器(包含两个button组件)
    Column({ space: 5 }) {
      Swiper(this.swiperController) {
        Text("0")
          .width(250)
          .height(250)
          .backgroundColor(Color.Gray)
          .textAlign(TextAlign.Center)
          .fontSize(30)
        Text("1")
          .width(250)
          .height(250)
          .backgroundColor(Color.Green)
          .textAlign(TextAlign.Center)
          .fontSize(30)
      }
      .indicator(true)

      Row({ space: 12 }) {
//step3:添加button组件onclick事件通过轮播控制器showNext(),showPrevious(),实现向前向后翻页
        Button('showNext')
          .onClick(() => {
            this.swiperController.showNext(); 
          })
        Button('showPrevious')
          .onClick(() => {
            this.swiperController.showPrevious();
          })
      }.margin(5)
    }.width('100%')
    .margin({ top: 5 })
  }
}

5.轮播方向

Swiper支持水平和垂直方向上进行轮播,主要通过vertical属性控制,vertical默认值为false。

当vertical为true时,表示在垂直方向上进行轮播。

为false时,表示在水平方向上进行轮播。

Swiper(this.swiperController) {
  ...
}
.indicator(true)
.vertical(false)

如以上代码所示,轮播方向为水平方向

6.每页显示多个子页面

Swiper支持在一个页面内同时显示多个子组件,通过displayCount属性设置。

Swiper(this.swiperController) {
  Text("0")
    .width(250)
    .height(250)
    .backgroundColor(Color.Gray)
    .textAlign(TextAlign.Center)
    .fontSize(30)
  Text("1")
    .width(250)
    .height(250)
    .backgroundColor(Color.Green)
    .textAlign(TextAlign.Center)
    .fontSize(30)
  Text("2")
    .width(250)
    .height(250)
    .backgroundColor(Color.Pink)
    .textAlign(TextAlign.Center)
    .fontSize(30)
  Text("3")
    .width(250)
    .height(250)
    .backgroundColor(Color.Blue)
    .textAlign(TextAlign.Center)
    .fontSize(30)
}
.indicator(true)
.displayCount(2) //注:定义一个页面内显示两个子组件

渲染效果如下:


总结

本文学习了解轮播布局使用的Swiper组件,了解组件的布局约束,详细学习了轮播容器组件的相关应用特性(循环播放、自动播放、导航样式自定义、轮播方向控制、轮播页面控制、单页面多组件控制),下文将学习鸿蒙开发UI相关的常用组件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/347133.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

docker(上)

笔记资料参考与尚硅谷 前提知识课程介绍课程定位学习建议 1前提知识 boot cloud git push pull redis nginx mysql... Linux centos ubuntu 2课程介绍 2.1 2018 vs 2022 2.2 k8s(雷峰崖) 2.3 大纲 3课程定位(因材施教量体裁衣…

电商API接口|爬虫实战-js逆向,以淘宝sign为例

如果我们想要获取某宝的商品信息或者商品的评论信息的话。可能其中的一条途径就是爬虫了【淘宝商品详情API】。放在以前的话,爬虫还是挺简单的。但是放到现在呢,其实并不容易了。因为现在各个平台的反爬机制都加强了。有的会加强监控的,有的则…

使用IntelliJ IDEA快速搭建springboot 基础模板项目

使用IntelliJ IDEA快速搭建springboot 基础模板项目!今天和大家分享一下,如何使用IntelliJ IDEA里面的maven插件,来快速搭建一个简单的Springboot基础项目。 第一步,菜单里面找到,文件-》新建-项目。如图。我们勾选了是…

Zookeeper3.5.7基础学习

文章目录 一、Zookeeper入门1、概述2、特点3、数据结构4、应用场景 二、Zookeeper 安装部署1、本地模式安装1.1 基础操作1.2 配置参数解读 2、集群部署2.1 集群安装2.2 选举机制(面试重点)2.3 ZK 集群启动停止脚本 三、ZK客户端相关操作1、客户端命令行操作1.1 命令行语法1.2 z…

车载显示,“激斗”与“换代”

编者按:车载显示,正在进入新一轮变革周期。 车载显示作为汽车智能化的重要交互终端,在过去几年,持续受益车企的大屏化、多屏化配置趋势,部分头部厂商赚得盆满钵满。 比如,作为京东方旗下唯一的车载显示模组…

携程基于Jira Cloud的敏捷项目管理实践

好的工具可以满足团队在各个成长阶段的管理诉求 实践一:对齐目标/团队OKR/多团队协作战略项目 实践二:以产品为中心的协作框架 实践三:交付团队管理 实践四:和海外子公司对齐,协作

guitarpro8有免费版本吗? Guitar Pro需要多少钱

Guitar Pro8官方并没有提供一个完全免费的版本。然而,根据搜索结果,存在一个声称是Guitar Pro免费版的V8.0.1.28版本,这个版本被描述为一款可以自动谱曲的简单实用的谱曲软件。此外,还有信息称Guitar Pro免费版能够在不需要支付费…

在linux、window环境搭建kafka环境

一、搭建环境前置准备 下载kafka的官网 http://kafka.apache.org/downloads根据自己的需求选择版本,安装包不区分linux和windows环境,这一个安装包均可部署。 源代码包含kafka的代码文件,使用scala编写的。 二、linux环境 1. 上传安装包 我下载的版本是kafka_2.12-3.6.1…

php中laravel框架中接口开发实战经验总结

一.项目接口实战错误经验总结 1. 逻辑层静态类调用非静态方法报错,如下 Non-static method App\\Services\\Common\\StatisticBusinessService::getLevelUserCarCount() should not be called statically 问题原因:方法定义时没加static 解决方案: …

Threejs 问题——模型引入后并未加载出来

文章目录 问题分析 问题 Threejs 模型引入后并未加载出来 分析 该问题是由于引入OBJ模型路径报错 目前测试 在 public/static/ 引入时不会发生此错误并渲染成功 如果没有此报错且模型没渲染出来, 可以尝试刷新标签页或者异步请求模型方法 我的路径如下 引用如下 createM…

【2024】新建mysql数据库,如何选择字符集和排序规则

如何使用 Navicat 新建 MySQL 数据库,并选择字符集与排序规则 如何使用 Navicat 新建 MySQL 数据库并选择字符集与排序规则1. 开始之前2. 新建数据库步骤 1: 打开 Navicat步骤 2: 创建新数据库步骤 3: 填写数据库名称 常见的字符集和排序规则及其选择场景1. 字符集&…

MCU常用外设总线

目录 前言一、时钟与中断二、GPIO三、ADC四、定时器4.1 基本定时器4.2 通用定时器4.2.1 输入捕获4.2.2 输出比较 五、UART5.1 通讯的基本概念5.1.1 串行通讯与并行通讯5.1.2 全双工、半双工及单工通讯5.1.3 同步通讯与异步通讯5.1.4 通信速率 5.2 异步串口UART5.2.1 物理层5.2.…

谷达冠楠:现在开网店到底靠谱吗

在互联网高速发展的当下,开网店已成为众多创业者的选择。然而,面对激烈的市场竞争和不断变化的网络环境,人们不禁要问:现在开网店到底靠谱吗? 我们必须认识到,任何商业行为都存在风险,开网店也不例外。但是…

Python + Selenium —— 网页元素定位之标签名和链接文本定位

tag name tag name 为标签名定位,使用网页元素的标签名如a, div, input, span 等。 但是有一个问题,常见的标签名比如 在同一个页面上有非常多。会不会觉得 tag name 没什么用呢? 当然普通的模拟操作是不大有用,这个重复性实在…

Spring如何使用自定义注解来实现自动管理事务?

人可以做他(她)想做的,但不能要他(她)想要的 一个目录 前言业务代码展示手动挡自动挡事务失效的问题代码地址 前言 在两年半以前,我写了一篇博客:框架的灵魂之注解基础篇: 在那篇博客的结尾,我埋了一个坑&#xff1a…

mac安装部署gitbook教程

mac安装部署gitbook教程 前言一、安装准备二、GitBook安装三、项目初始化 前言 一些自己实际操作的记录。 一、安装准备 Node.js gitbook基于Node.js,所以需要提前安装。 下载地址:https://nodejs.org/en/,可以下载比较新的版本。(但我的建议…

深入到 TLP:PCI Express 设备如何通信

前言 当我为PCI express编写Xillybus IP核时,我很快发现很难开始:在线资源和官方规格用关于螺母和螺栓的血腥细节轰炸你,但对机器应该做什么却很少说。因此,一旦我努力自己弄清楚这一点,我就决定写这个小指南&#xf…

源码篇--Redis 五种数据类型

文章目录 前言一、 字符串类型:1.1 字符串的编码格式:1.1.1 raw 编码格式:1.1.2 empstr编码格式:1.1.3 int 编码格式:1.1.4 字符串存储结构展示: 二、 list类型:2.1 List 底层数据支持:2.2 List 源码实现:2.3 List 结构…

【C++】反向迭代器模拟实现

👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》《算法》 🌝每一个不曾起舞的日子,都是对生命的辜负 目录 前言 1.利用适配器的思想…

【产品设计】B端导航菜单的三大模式

导航是每一个网站的灵魂所在,用户依赖导航进行不同页面的切换,找到自己所需的。那么该如何将庞大的B端系统中的导航菜单做好呢? 导航菜单是一个网站的灵魂,用户依赖导航在各个页面中进行跳转。 导航菜单一般分为顶部导航和侧边导…