Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >鸿蒙开发:如何实现文本跑马灯效果

鸿蒙开发:如何实现文本跑马灯效果

原创
作者头像
程序员一鸣
发布于 2025-03-28 02:42:10
发布于 2025-03-28 02:42:10
930
举报

前言

本文基于Api13

跑马灯的场景非常常见,在日常的开发中常见于消息、广告及公告通知,内容从左到右或者从右到左进行滚动播出,在鸿蒙开发中,实现起来可以说是非常简单,一个属性便可以搞定。

比如给定一段内容,让它从右往左进行滚动播出,效果如下:

鸿蒙当中,直接给文本组件,设置textOverflow属性,让overflow的值为TextOverflow.MARQUEE即可:

代码语言:typescript
AI代码解释
复制
Text(this.message)
        .textOverflow({ overflow: TextOverflow.MARQUEE })
        .border({ width: 1, color: Color.Gray })
        .padding({ top: 10, bottom: 10 })
        .margin({ left: 10, right: 10 })

虽然说,TextOverflow.MARQUEE实现了一个跑马灯效果,但是仍然存在一些问题,比如,我想控制一下播放的速度,或者我想暂停滚动,再或者,我想从左往右滚动等等,有很多阻碍性问题存在。

为了解决这些问题,鸿蒙给我们提供了一个,专门用于跑马灯的组件Marquee,解决Text跑马灯的痛点。

Marquee

Marquee是一个专门的跑马灯组件,用于滚动展示一段单行文本,自身有五个属性可供使用。

属性

类型

概述

start

boolean

控制跑马灯是否进入播放状态。

step

number

滚动动画文本滚动步长,可用于控制速度。

loop

number

设置重复滚动的次数,小于等于零时无限循环

fromStart

boolean

设置文本从头开始滚动或反向滚动

src

string

需要滚动的文本

除此之外,我们也可以通过文本属性也更改内容的样式。

属性

类型

概述

fontColor

ResourceColor

设置字体颜色

fontSize

Length

设置字体大小

fontWeight

number /FontWeight /string

设置文本的字体粗细,设置过大可能会在不同字体下有截断

fontFamily

string/Resource

设置字体列表

allowScale

boolean

设置是否允许文本缩放

marqueeUpdateStrategy

MarqueeUpdateStrategy

跑马灯组件属性更新后,跑马灯的滚动策略。(当跑马灯为播放状态,且文本内容宽度超过跑马灯组件宽度时,该属性生效。)

简单案例

代码语言:typescript
AI代码解释
复制
@Entry
@Component
struct DemoPage {
  @State message: string = "我是一段比较长的内容,主要用于测试跑马灯的效果,看看如何进行滚动"
  @State start: boolean = true
  @State fromStart: boolean = true

  build() {
    Column() {
      Marquee({
        start: this.start,
        fromStart: this.fromStart,
        step: 2,
        src: this.message
      })

      Row() {
        Button("开始")
          .onClick(() => {
            this.start = true
          })
        Button("暂停")
          .onClick(() => {
            this.start = false
          })
        Button("切换方向")
          .onClick(() => {
            this.fromStart = !this.fromStart
          })
      }.margin({ top: 10 })
    }
    .height('100%')
    .width('100%')
    .justifyContent(FlexAlign.Center)
  }
}

Marquee除了可以实现跑马灯的功能,还有一些事件的监听,比如当滚动的文本内容变化或者开始滚动时触发onStart,完成一次滚动时触发,若循环次数不为1,则该事件会多次触发的监听onBounce,以及滚动全部循环次数完成时触发回调监听onFinish。

相关总结

如果只是一个普通的跑马灯效果,而且Text文本组件中的TextOverflow.MARQUEE可以满足需求,以Text为主,如果你想控制文本的速度,暂停等功能,可以使用Marquee,如果你想实现复杂的场景滚动,比如图片,各种组件嵌套滚动,这种只能自己定义了。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
使用Python实现跑马灯效果:流动的文字动画
跑马灯效果是一种经典的动画效果,经常用于显示器和广告牌上滚动显示文字。在这篇博客中,我们将使用Python创建一个跑马灯效果,通过利用Pygame库,我们可以实现一个流动的文字动画。
屿小夏
2025/05/23
460
100.HarmonyOS NEXT跑马灯组件教程:实际应用与场景示例
跑马灯组件在HarmonyOS NEXT应用中有着广泛的应用场景,特别是在需要在有限空间内展示较长文本内容的情况下。本文将介绍跑马灯组件的实际应用场景和使用方法,帮助开发者更好地理解和使用这一组件。
全栈若城
2025/03/17
1230
100.HarmonyOS NEXT跑马灯组件教程:实际应用与场景示例
跑马灯带你深入浅出TextView的源码世界
想必大家平时也没那么多时间是单独看源码,又或者只是单纯的看源码遇到问题还是不知道怎么从源码的角度解决。
2020labs小助手
2022/03/22
7050
Android自定义跑马灯效果(适合任意布局)
从图片中可以看到布局是由包含两个TextView的布局组成,一般的垂直跑马灯效果只支持单个TextView,水平方向的跑马灯更是不需要自定义,原生TextView就支持。
毛大姑娘
2020/09/10
2.1K0
Android自定义跑马灯效果(适合任意布局)
HTML跑马灯
HTML提供了一种非常简单实现跑马灯效果的标签,Marquee标签,通过设置不同的属性,可以实现不同的跑马灯效果:
十玖八柒
2022/08/01
1.7K0
30.[HarmonyOS NEXT Column案例八(上)] 构建现代聊天界面:层叠布局与消息列表的实现
在HarmonyOS NEXT应用开发中,聊天界面是一种常见且复杂的界面类型,它需要展示消息列表、输入区域以及各种交互元素。本教程将详细讲解如何使用Column组件作为主容器,结合Stack组件实现层叠布局,创建一个现代化的聊天界面。通过ChatPage组件的实际案例,我们将展示如何构建包含消息列表和输入区域的复合布局,帮助开发者掌握复杂布局的实现技巧。
全栈若城
2025/06/01
750
30.[HarmonyOS NEXT Column案例八(上)] 构建现代聊天界面:层叠布局与消息列表的实现
HarmonyOS实战—实现跑马灯效果
1. Text文本框展示大段内容文字 文本中展示大段文字,除了这种方式之外,还有其他方式 [在这里插入图片描述] 可以使用跑马灯的形式展示,但需要两个前提条件,如下: 下面两个都是默认属性,也可以省略不写 [在这里插入图片描述] ohos:truncation_mode="ellipsis_at_start",表示前面的内容省略掉,以“...”的形式,如: <Text ohos:id="$+id:text1" ohos:height="100vp" ohos:width="100vp" ohos:b
兮动人
2021/09/10
1.2K0
HarmonyOS实战—实现跑马灯效果
【Android】TextView的跑马灯效果
TextView的跑马灯效果也就是指当你只想让TextView单行显示,可是文本内容却又超过一行时,自动从左往右慢慢滑动显示的效果就叫跑马灯效果。
请叫我大苏
2019/02/15
5.4K1
【Android】TextView的跑马灯效果
104.HarmonyOS NEXT跑马灯组件教程:实际应用场景与最佳实践
跑马灯组件是HarmonyOS NEXT中一个非常实用的UI组件,它可以在有限的空间内展示超出显示区域的文本内容。本文将详细介绍跑马灯组件的实际应用场景和最佳实践,帮助开发者更好地理解如何在实际项目中使用跑马灯组件。
全栈若城
2025/03/17
1410
vuejs基础-跑马灯效果
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript" src="vue.min.js" ></script> </head> <body> <div id="app"> <input type="button" value="按钮" @click="lang" /> <input type="button" value="按钮"
eadela
2019/09/29
9550
vuejs基础-跑马灯效果
三.跑马灯效果练习
本文最后更新于 873 天前,其中的信息可能已经有所发展或是发生改变。 image.png <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title
Yuyy
2022/06/28
6390
三.跑马灯效果练习
111.HarmonyOS NEXT 跑马灯组件详解(三):核心组件实现原理
MarqueeViewComponent 是跑马灯组件的主要容器组件,负责整体布局和功能组织。
全栈若城
2025/03/17
990
105.HarmonyOS NEXT 跑马灯组件详解(一): 组件概述与架构设计
跑马灯(Marquee)组件是一个用于展示滚动文本的UI组件,主要用于处理文本内容超出显示区域时的展示问题。当文本内容过长时,组件会自动实现文本的循环滚动效果,并在每次循环结束后暂停一定时间。
全栈若城
2025/03/17
940
Vue教程02(跑马灯效果案例)
  前面的文章我们介绍了v-on这个指令,可以用来实现事件的绑定,本文我们利用v-on来实现一个简单的跑马灯效果,就是如下这种效果
用户4919348
2019/07/09
2.1K1
108.HarmonyOS NEXT 跑马灯组件详解(四): UI布局与样式设计
通过以上详细的UI布局和样式设计讲解,你应该能够更好地理解跑马灯组件的视觉呈现部分。这些知识将帮助你创建更美观、更易维护的UI组件。
全栈若城
2025/03/17
1210
分别用Js和vue实现跑马灯效果
① setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式。setTimeout()方法接收两个参数,第一个参数是将要推迟执行的函数名或者一段代码,第二个参数是推迟执行的毫秒数。
Twcat_tree
2022/11/30
1.8K0
跑马灯 TextView效果设计
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/details/48264373
泥豆芽儿 MT
2018/09/11
7850
Android TextView跑马灯效果
以上即可实现跑马灯效果,但是当页面中有多个textview跑马灯效果的时候,只有第一个才能获取到焦点,这个时候就需要自定义修改一下textview。
yechaoa
2022/06/10
1.1K0
106.HarmonyOS NEXT 跑马灯组件详解(二): MarqueeSection核心实现
MarqueeSection是跑马灯组件的核心,负责实现文本的滚动效果。它通过配置动画参数和滚动属性,实现了流畅的文本滚动展示效果。
全栈若城
2025/03/17
770
99.HarmonyOS NEXT跑马灯组件教程:动画配置与参数详解
跑马灯组件的动画效果和滚动行为可以通过两个核心配置类进行自定义:MarqueeAnimationModifier和MarqueeScrollModifier。这两个类分别控制动画的播放方式和滚动区域的尺寸,为开发者提供了灵活的配置选项。本文将详细介绍这两个类的实现和使用方法。
全栈若城
2025/03/16
1160
推荐阅读
相关推荐
使用Python实现跑马灯效果:流动的文字动画
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档