鸿蒙应用开发学习:用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实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

华为鸿蒙HarmonyOS 5.1官宣7月开启升级! 首批支持名单公布

《华为鸿蒙HarmonyOS5.1官宣7月开启升级!首批支持名单公布》在刚刚结束的华为Pura80系列及全场景新品发布会上,除了众多新品的发布,还有一个消息也点燃了所有鸿蒙用户的期待,那就是Ha... 在今日的华为 Pura 80 系列及全场景新品发布会上,华为宣布鸿蒙 HarmonyOS 5.1 将于 7

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析

《Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析》InstantiationAwareBeanPostProcessor是Spring... 目录一、什么是InstantiationAwareBeanPostProcessor?二、核心方法解

Python使用Tkinter打造一个完整的桌面应用

《Python使用Tkinter打造一个完整的桌面应用》在Python生态中,Tkinter就像一把瑞士军刀,它没有花哨的特效,却能快速搭建出实用的图形界面,作为Python自带的标准库,无需安装即可... 目录一、界面搭建:像搭积木一样组合控件二、菜单系统:给应用装上“控制中枢”三、事件驱动:让界面“活”

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

基于Python开发一个有趣的工作时长计算器

《基于Python开发一个有趣的工作时长计算器》随着远程办公和弹性工作制的兴起,个人及团队对于工作时长的准确统计需求日益增长,本文将使用Python和PyQt5打造一个工作时长计算器,感兴趣的小伙伴可... 目录概述功能介绍界面展示php软件使用步骤说明代码详解1.窗口初始化与布局2.工作时长计算核心逻辑3

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹