
#HarmonyOS NEXT体验官# 基于鸿蒙Next的App(创意工坊)解析4:插入文本 原创
在这篇文章中,我们会详细讲解如何实现《创意工坊》中的插入文字的功能,效果如下图所示:
首先,插件文本需要弹出如下图的设置对话框。
这个对话框需要使用InsertText组件完成,代码如下:
下面详细解释一下这段代码
这段代码是一个名为InsertText的ArkTS自定义组件,用于实现文本插入和编辑的用户界面。我会非常详细地解释这段代码的结构和功能:
1.导入声明:
代码开始部分导入了必要的常量、类型和函数。这包括背景颜色常量、文档大小相关类型、一些通用函数(如颜色转换函数),以及一个自定义的Web颜色选择器对话框组件。
2.组件定义:
使用@Component装饰器定义了InsertText结构体,这是ArkTS中声明自定义组件的方式。
3.属性和方法:
- 定义了三个可选的回调函数:insertTextOK、editTextOK和insertTextCancel,用于处理文本插入、编辑和取消操作。
- 使用@Link装饰器定义了两个双向绑定属性:config(ObjConfig类型)和insertOrEdit(布尔类型)。这允许组件与父组件共享和同步数据。
- 创建了两个CustomDialogController实例:fillController和strokeController,用于管理填充颜色和边框颜色的选择器对话框。
- 定义了onStrokeClickEvent和onFillClickEvent方法,用于处理颜色选择后的逻辑,包括更新配置和关闭对话框。
4.UI构建(build方法):
build方法定义了组件的用户界面,使用ArkTS的声明式UI语法。主要包含以下元素:
a. 文本输入:
提供一个TextInput组件,允许用户输入或编辑文本。
b. 颜色选择:
为填充颜色和边框颜色各提供一个按钮和颜色显示区域。点击按钮会打开相应的颜色选择器对话框。
c. 边框宽度和字体大小调整:
使用Slider组件允许用户通过滑动来调整边框宽度和字体大小。当前值显示在滑动条旁边。
d. 文本装饰选项:
提供了三个Checkbox组件,分别用于选择上划线、删除线和下划线。每个选项旁边有一个文本标签,点击标签也可以切换选项状态。
e. 确定和取消按钮:
在界面底部提供了确定和取消按钮。确定按钮会根据当前是插入还是编辑模式调用相应的回调函数,而取消按钮会调用取消回调函数。
5.样式和布局: - 整个界面使用Column布局,将各个元素垂直排列。
- 使用Row和Flex布局来组织水平方向的元素,如颜色选择器和按钮。
- 应用了一些通用样式,如字体大小、颜色、边距等,以确保界面的一致性和美观性。
- 使用PANEL_BACKGROUND_COLOR作为整个面板的背景色,并添加了圆角边框。
6.交互逻辑: - 文本输入、滑动条、复选框等UI元素都绑定了相应的事件处理函数,用于实时更新config对象中的相关属性。
- 颜色选择使用自定义的WebColorPickerDialog组件,通过CustomDialogController来管理其显示和隐藏。
- 确定按钮根据insertOrEdit的值来决定调用insertTextOK还是editTextOK回调函数,传递更新后的config对象。
- 取消按钮调用insertTextCancel回调函数,允许父组件处理取消操作。
这个组件提供了一个全面的文本样式编辑界面,包括文本内容、颜色、大小、边框和装饰等多个方面的定制选项。它的设计考虑了用户交互的便利性,并通过回调函数和数据绑定实现了与父组件的良好集成。这使得它可以轻松地嵌入到需要文本编辑功能的更大型应用中。
当点击“确定”按钮插入文本时,会调用insertTextOK函数,代码如下:
在这段代码中,核心的函数就是用js实现的addText函数,用于添加文本,代码如下:
addText函数的详细介绍如下:
1.函数定义:
addText 函数接受一个 config 参数,允许用户自定义文本对象的属性。
2.默认配置:
defaultConfig 对象定义了文本对象的默认属性,包括位置、字体、颜色、大小等样式设置。
3.配置合并:
使用 Object.assign 方法将用户提供的 config 与 defaultConfig 合并,允许用户覆盖默认设置。
4.创建 IText 对象:
使用合并后的配置创建一个新的 fabric.IText 对象。
5.添加到 Canvas:
将新创建的文本对象添加到 Fabric.js canvas 上。
关于 Fabric.js 中的 IText 类:
IText 是 Fabric.js 库中的一个交互式文本类,它继承自基本的 Text 类,但提供了更多的交互功能。以下是 IText 类的一些主要特点:
1.交互式编辑:
用户可以直接在画布上双击 IText 对象来编辑文本内容。
2.光标和选择:
支持文本光标和文本选择功能,就像在常规文本编辑器中一样。
3.样式编辑:
允许对文本的不同部分应用不同的样式,如颜色、字体大小等。
4.键盘事件:
响应键盘事件,支持常见的文本编辑操作,如删除、复制、粘贴等。
5.多行支持:
自动处理文本换行,支持多行文本。
6.富文本功能:
可以为文本的不同部分设置不同的样式,实现富文本效果。
7.动画支持:
可以轻松地为 IText 对象添加动画效果。
8.事件处理:
提供了多种事件钩子,允许开发者响应用户的交互行为。
IText 类使得在 Fabric.js 画布上创建和操作交互式文本变得非常简单。它特别适用于需要用户能够直接在画布上编辑文本的应用场景,如在线设计工具、图片编辑器等。通过提供的配置选项,开发者可以精细地控制文本的外观和行为,使其满足各种复杂的设计需求。
