鸿蒙应用开发学习:用Marquee组件做个跑马灯

2024-03-28 02:36

本文主要是介绍鸿蒙应用开发学习:用Marquee组件做个跑马灯,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、前言

鸿蒙应用的学习持续进行中,这两天阅读官方的API参考文档,发现一个有趣的组件——Marquee,用它做了个跑马灯,做个学习记录。

二、参考资料

官网文档链接如下:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V2/ts-basic-components-marquee-0000001478181401-V2

官方的介绍是:跑马灯组件,用于滚动展示一段单行文本,仅当文本内容宽度超过跑马灯组件宽度时滚动。

这个组件拥有start, step, loop, fromStart, src五个参数可调,并提供了onStart, onBounce, onFinish三个事假,具体说明官网文档写得很清楚,不再赘述。

三、效果展示

文档末尾提供了一个示例,展示了这个组件的基本用法,我的代码在示例的基础上进行了扩展,实现了动态修改滚动文本内容、文本字体大小、文本颜色和滚动方向,使用onBounce事件统计滚动次数,通过一个按钮控制跑马灯的运行和暂停。

可动态修改文本

能够实时调整字体大小和颜色

支持实时控制反向滚动,一个按钮控制运行和暂停

展示视频见哔站链接:

鸿蒙应用开发学习:通过Marquee组件实现跑马灯效果_哔哩哔哩_bilibili

四、代码

最后上完整代码

import promptAction from '@ohos.promptAction'@Entry
@Component
struct MarqueePage {@State count: number = 0 // 跑马灯滚动次数@State start: boolean = false // 控制跑马灯是否进入播放状态@State fromStart: boolean = true // 设置文本从头开始滚动或反向滚动private step: number = 50 // 设置滚动动画文本滚动步长private loop: number = -1 // 设置重复滚动的次数,小于等于零时无限循环 Infinity@State src: string = '' // 这是一个跑马灯哦@State command: string = '运行' // “运行/暂停”按钮当前显示的字符@State fontSize: number = 232 // 控制跑马灯字体大小@State fontColor: string = '#ffff0000' // 控制跑马灯字体颜色  '#ffffd200'build() {Column({ space: 10 }) {// 跑马灯组件Marquee({start: this.start,step: this.step,loop: this.loop,fromStart: this.fromStart,src: this.src}).width(360).height(240).fontColor(this.fontColor) // '#ffffd200'.fontSize(this.fontSize).fontWeight(700).backgroundColor('#ff3c3c3c').margin({ bottom: 5 }).onBounce(() => {this.count += 1})// 显示已滚地次数Row() {Text('已滚动次数:').fontSize(9).fontSize(16)Text(this.count + '次').fontSize(9).fontSize(16)}.margin({ bottom: 20 })// 文本输入框TextArea({ placeholder: '请输入要显示的文字内容' }).onChange((value: string) => {this.src = value}).margin({ bottom: 10 })// 调整跑马灯字体大小Row({ space: 10 }) {Text("字体大小")Slider({value: this.fontSize,min: 208,step: 8,max: 296,style: SliderStyle.InSet}).layoutWeight(1).showSteps(true).selectedColor($r('app.color.button_bgColor_lightBlue')).onChange(value => {this.fontSize = value})}.width("100%").margin({ bottom: 5 })// 控制跑马灯字体颜色Row({ space: 10 }) {Text("字体颜色")Grid() {GridItem() {Text("红").fontColor('#ffff0000').fontSize(24)}GridItem() {Text("黄").fontColor('#ffffd200').fontSize(24)}GridItem() {Text("蓝").fontColor('#ff0359fb').fontSize(24)}GridItem() {Text("绿").fontColor('#ff00ff00').fontSize(24)}GridItem() {Radio({ value: 'Radio1', group: 'radioGroup' }).checked(true).height(30).width(30).colorBlend($r('app.color.button_bgColor_lightBlue')).onChange((isChecked: boolean) => {console.log('Radio1 status is ' + isChecked)this.fontColor = '#ffff0000'})}GridItem() {Radio({ value: 'Radio2', group: 'radioGroup' }).checked(false).height(30).width(30).colorBlend($r('app.color.button_bgColor_lightBlue')).onChange((isChecked: boolean) => {console.log('Radio2 status is ' + isChecked)this.fontColor = '#ffffd200'})}GridItem() {Radio({ value: 'Radio3', group: 'radioGroup' }).checked(false).height(30).width(30).colorBlend($r('app.color.button_bgColor_lightBlue')).onChange((isChecked: boolean) => {console.log('Radio3 status is ' + isChecked)this.fontColor = '#ff0359fb'})}GridItem() {Radio({ value: 'Radio4', group: 'radioGroup' }).checked(false).height(30).width(30).colorBlend($r('app.color.button_bgColor_lightBlue')).onChange((isChecked: boolean) => {console.log('Radio4 status is ' + isChecked)this.fontColor = '#ff00ff00'})}}.width('70%').height(80).columnsTemplate('1fr 1fr 1fr 1fr')}.width('100%')// 控制跑马灯滚动方向Row() {Checkbox({ name: 'checkbox1' }).selectedColor($r('app.color.button_bgColor_lightBlue')).onChange((value: boolean) => {this.fromStart = !this.fromStart})Text("反向滚动")}.margin({ bottom: 10 })Button(this.command).width(100).margin({ bottom: 10 }).backgroundColor($r('app.color.button_bgColor_lightBlue')).onClick(() => {if (this.command == '运行') {if (this.src == "") {promptAction.showToast({ message: '内容为空不能运行' })} else {this.command = '暂停'this.start = true}} else {this.command = '运行'this.start = false}})}.width('100%').padding(10)}
}

这篇关于鸿蒙应用开发学习:用Marquee组件做个跑马灯的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/854201

相关文章

Redis中Stream详解及应用小结

《Redis中Stream详解及应用小结》RedisStreams是Redis5.0引入的新功能,提供了一种类似于传统消息队列的机制,但具有更高的灵活性和可扩展性,本文给大家介绍Redis中Strea... 目录1. Redis Stream 概述2. Redis Stream 的基本操作2.1. XADD

JSONArray在Java中的应用操作实例

《JSONArray在Java中的应用操作实例》JSONArray是org.json库用于处理JSON数组的类,可将Java对象(Map/List)转换为JSON格式,提供增删改查等操作,适用于前后端... 目录1. jsONArray定义与功能1.1 JSONArray概念阐释1.1.1 什么是JSONA

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

PostgreSQL的扩展dict_int应用案例解析

《PostgreSQL的扩展dict_int应用案例解析》dict_int扩展为PostgreSQL提供了专业的整数文本处理能力,特别适合需要精确处理数字内容的搜索场景,本文给大家介绍PostgreS... 目录PostgreSQL的扩展dict_int一、扩展概述二、核心功能三、安装与启用四、字典配置方法

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

Java MQTT实战应用

《JavaMQTT实战应用》本文详解MQTT协议,涵盖其发布/订阅机制、低功耗高效特性、三种服务质量等级(QoS0/1/2),以及客户端、代理、主题的核心概念,最后提供Linux部署教程、Sprin... 目录一、MQTT协议二、MQTT优点三、三种服务质量等级四、客户端、代理、主题1. 客户端(Clien

SpringBoot开发中十大常见陷阱深度解析与避坑指南

《SpringBoot开发中十大常见陷阱深度解析与避坑指南》在SpringBoot的开发过程中,即使是经验丰富的开发者也难免会遇到各种棘手的问题,本文将针对SpringBoot开发中十大常见的“坑... 目录引言一、配置总出错?是不是同时用了.properties和.yml?二、换个位置配置就失效?搞清楚加

Python中对FFmpeg封装开发库FFmpy详解

《Python中对FFmpeg封装开发库FFmpy详解》:本文主要介绍Python中对FFmpeg封装开发库FFmpy,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、FFmpy简介与安装1.1 FFmpy概述1.2 安装方法二、FFmpy核心类与方法2.1 FF

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比

《CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比》CSS中的position属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布... css 中的 position 属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布局和层叠关