鸿蒙应用开发学习:用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

相关文章

Python结合PyWebView库打造跨平台桌面应用

《Python结合PyWebView库打造跨平台桌面应用》随着Web技术的发展,将HTML/CSS/JavaScript与Python结合构建桌面应用成为可能,本文将系统讲解如何使用PyWebView... 目录一、技术原理与优势分析1.1 架构原理1.2 核心优势二、开发环境搭建2.1 安装依赖2.2 验

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案

《Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案》:本文主要介绍Vue3组件中getCurrentInstance()获取App实例,但是返回nu... 目录vue3组件中getCurrentInstajavascriptnce()获取App实例,但是返回n

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t

SpringShell命令行之交互式Shell应用开发方式

《SpringShell命令行之交互式Shell应用开发方式》本文将深入探讨SpringShell的核心特性、实现方式及应用场景,帮助开发者掌握这一强大工具,具有很好的参考价值,希望对大家有所帮助,如... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定

SpringBoot应用中出现的Full GC问题的场景与解决

《SpringBoot应用中出现的FullGC问题的场景与解决》这篇文章主要为大家详细介绍了SpringBoot应用中出现的FullGC问题的场景与解决方法,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录Full GC的原理与触发条件原理触发条件对Spring Boot应用的影响示例代码优化建议结论F

MySQL 分区与分库分表策略应用小结

《MySQL分区与分库分表策略应用小结》在大数据量、复杂查询和高并发的应用场景下,单一数据库往往难以满足性能和扩展性的要求,本文将详细介绍这两种策略的基本概念、实现方法及优缺点,并通过实际案例展示如... 目录mysql 分区与分库分表策略1. 数据库水平拆分的背景2. MySQL 分区策略2.1 分区概念

Spring Shell 命令行实现交互式Shell应用开发

《SpringShell命令行实现交互式Shell应用开发》本文主要介绍了SpringShell命令行实现交互式Shell应用开发,能够帮助开发者快速构建功能丰富的命令行应用程序,具有一定的参考价... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定义S

SpringQuartz定时任务核心组件JobDetail与Trigger配置

《SpringQuartz定时任务核心组件JobDetail与Trigger配置》Spring框架与Quartz调度器的集成提供了强大而灵活的定时任务解决方案,本文主要介绍了SpringQuartz定... 目录引言一、Spring Quartz基础架构1.1 核心组件概述1.2 Spring集成优势二、J

鸿蒙中Axios数据请求的封装和配置方法

《鸿蒙中Axios数据请求的封装和配置方法》:本文主要介绍鸿蒙中Axios数据请求的封装和配置方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.配置权限 应用级权限和系统级权限2.配置网络请求的代码3.下载在Entry中 下载AxIOS4.封装Htt