场景描述
文字特效是一个比较常见的功能,下面列举一些遇到的业务需求:
-
场景一:文字渐变效果
-
场景二:歌词滚动效果
-
场景三:文字倒影效果
-
场景四:跑马灯渐变效果
方案描述
场景一:
文字渐变效果
效果图
方案
使用linearGradient与blendMode结合实现文字渐变效果
核心代码
Row() {
Text(this.message)
.fontSize(42)
.fontWeight(FontWeight.Bold)
.blendMode(BlendMode.DST_IN, BlendApplyType.OFFSCREEN)
}.linearGradient({
direction: GradientDirection.Right,
colors: [["#f97794", 0.0], ["#623aa2", 1]]
})
.blendMode(BlendMode.SRC_OVER, BlendApplyType.OFFSCREEN)
场景二:
歌词滚动效果
效果图
方案
使用linearGradient与blendMode结合实现文字渐变效果,在结合动画来实现滚动的效果。
核心代码
Row() {
Text(this.message)
.fontSize(32)
.fontColor(Color.Black)
.fontWeight(FontWeight.Bold)
.blendMode(BlendMode.DST_IN, BlendApplyType.OFFSCREEN)
}.linearGradient({
direction: GradientDirection.Right,
colors: [[0xff0000, 0.0], [0xff0000, this.value], [0x000000, this.value], [0x000000, 1.0]]
}).blendMode(BlendMode.SRC_OVER, BlendApplyType.OFFSCREEN)
.backgroundImageSize({ width: 0, height: 0 })
.onAppear(() => {
animateTo({
duration: 5000,
finishCallbackType: FinishCallbackType.LOGICALLY,
curve: Curve.Linear,
iterations: -1,
onFinish: () => {
this.value = 0
}
}, () => {
this.value = 1
})
})
场景三:
文字倒影效果
效果图
方案
鸿蒙没有直接设置文字倒影的API,我们可以使用Stack将两个一样的元素叠在一起,将底层的元素沿着X轴翻转180度即可达到倒影效果,具体代码如下所示:
核心代码
Stack()
Text("好好学习 天天向上").fontSize(24).fontColor(Color.Red)
Text("好好学习 天天向上").fontSize(24).fontColor(Color.Red)
.rotate({
x: 1,
y: 0,
z: 0,
angle: "180deg",
centerX: "50%",
centerY: "100%"
})
.linearGradientBlur(60, {
fractionStops: [[0, 0], [1, 1]],
direction: GradientDirection.Bottom
})
}
场景四:
跑马灯渐变效果
效果图
方案与核心代码
文字跑马灯实现有两种方案:
方案一: 使用Marquee组件实现文本跑马灯效果
这种方案实现的跑马灯效果能力更强,可塑性更强,但是注意使用Marquee组件试下的时候不宜在页面中使用过多,该组件存在一定的性能问题,不建议在一个页面中使用超过四个。
Row() {
Column() {
Marquee({
start: this.start,
step: this.step,
loop: this.loop,
fromStart: this.fromStart,
src: this.src
})
.overlay('两边透明渐变', {
align: Alignment.Bottom,
offset: { x: 0, y: -35 }
})
.width('90%')
.fontColor('#000000')
.fontSize(30)
.fontWeight(700)
}
.blendMode(BlendMode.SRC_IN, BlendApplyType.OFFSCREEN)
.backgroundColor(Color.Transparent)
.width('100%')
}
.width('100%')
.linearGradient({
angle: 90,
// rgba(0, 0, 0, 0) 表示一种完全透明的颜色,其中最后一个参数 alpha(透明度)值为 0,表示该颜色是完全透明的
colors: [['rgba(0, 0, 0, 0)', 0], ['rgba(0, 0, 0, 1)', 0.2], ['rgba(0, 0, 0, 1)', 0.8], ['rgba(0, 0, 0, 0)', 1]]
})
.blendMode(BlendMode.SRC_OVER, BlendApplyType.OFFSCREEN)
方案二: 使用textOverlay属性实现跑马灯效果
这种方案实现的跑马灯效果没有性能问题,但是没有Marquee那样提供了各种回调,如果没有复杂的效果并且需要在页面中大量使用的时候建议使用这一种。
Row() {
Column() {
Text(this.src)
.width('90%')
.fontColor('#000000')
.fontSize(30)
.fontWeight(700)
.textOverflow({ overflow: TextOverflow.MARQUEE })
}
.blendMode(BlendMode.SRC_IN, BlendApplyType.OFFSCREEN)
.backgroundColor(Color.Transparent)
.width('100%')
}
.width('100%')
.linearGradient({
angle: 90,
// rgba(0, 0, 0, 0) 表示一种完全透明的颜色,其中最后一个参数 alpha(透明度)值为 0,表示该颜色是完全透明的
colors: [['rgba(0, 0, 0, 0)', 0], ['rgba(0, 0, 0, 1)', 0.2], ['rgba(0, 0, 0, 1)', 0.8], ['rgba(0, 0, 0, 0)', 1]]
})
.blendMode(BlendMode.SRC_OVER, BlendApplyType.OFFSCREEN)
鸿蒙全栈开发全新学习指南
有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以要有一份实用的鸿蒙(HarmonyOS NEXT)学习路线与学习文档用来跟着学习是非常有必要的。
针对一些列因素,整理了一套纯血版鸿蒙(HarmonyOS Next)全栈开发技术的学习路线,包含了鸿蒙开发必掌握的核心知识要点,内容有(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、WebGL、元服务、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、OpenHarmony驱动开发、系统定制移植等等)鸿蒙(HarmonyOS NEXT)技术知识点。
本路线共分为四个阶段:
第一阶段:鸿蒙初中级开发必备技能
第二阶段:鸿蒙南北双向高工技能基础:gitee.com/MNxiaona/733GH
第三阶段:应用开发中高级就业技术
第四阶段:全网首发-工业级南向设备开发就业技术:gitee.com/MNxiaona/733GH
《鸿蒙 (Harmony OS)开发学习手册》(共计892页)
如何快速入门?
1.基本概念
2.构建第一个ArkTS应用
3.……
开发基础知识:gitee.com/MNxiaona/733GH
1.应用基础知识
2.配置文件
3.应用数据管理
4.应用安全管理
5.应用隐私保护
6.三方应用调用管控机制
7.资源分类与访问
8.学习ArkTS语言
9.……
基于ArkTS 开发
1.Ability开发
2.UI开发
3.公共事件与通知
4.窗口管理
5.媒体
6.安全
7.网络与链接
8.电话服务
9.数据管理
10.后台任务(Background Task)管理
11.设备管理
12.设备使用信息统计
13.DFX
14.国际化开发
15.折叠屏系列
16.……
鸿蒙开发面试真题(含参考答案):gitee.com/MNxiaona/733GH
鸿蒙入门教学视频:
美团APP实战开发教学:gitee.com/MNxiaona/733GH
写在最后
- 如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:
- 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。
- 关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识。
- 想要获取更多完整鸿蒙最新学习资源,请移步前往小编:
gitee.com/MNxiaona/733GH