HarmonyOS 字体预览页面:用字号、斜体和下划线快速观察排版变化

开场:一个足够小、但很适合观察状态变化的页面

字体排版常常不是“选一个字体名称”这么简单。字号变化会影响一行文字的占用宽度、卡片的高度和视觉重心;斜体会改变字形的倾斜方向;下划线则会在文字下方增加一条清晰的装饰线。把这几个变化放在一个页面中,开发者可以很直观地观察 HarmonyOS 声明式界面中“状态变化—界面更新”的基本过程。

这个页面的功能非常集中。顶部显示“字体预览”,中间是一块浅色预览卡片,卡片中展示“HarmonyOS 字体排版预览”这句话;卡片下方有一个“字号”滑块和当前数字,最下面一行提供“斜体”和“下划线”两个开关。打开页面时,字号显示为 26,斜体和下划线都处于关闭状态。拖动滑块、打开开关,预览卡片会立即按照新的状态变化。

字体预览页面初始状态

这类页面看起来简单,却包含了几个非常典型的界面设计问题:一个状态应该由哪里保存,滑块的值应该怎样限制,样式开关是否应该彼此独立,预览文字和控制项之间应该保持怎样的关系,以及页面应该如何说明自己的能力边界。下面按照实际可见内容逐项拆开说明。

一、打开页面后,用户首先看到什么

页面采用从上到下的单列结构。白色背景铺满可见区域,内容四周保留统一的内边距,标题、预览卡片、字号控制行、两个开关和底部说明之间以固定间距分隔。这样的布局没有复杂导航,也没有第二个页面,用户打开后不需要先选择模式,直接就能看到文字预览和控制项。

最上方的“字体预览”是页面标题。标题字号明显大于其他文字,并使用粗体,承担页面识别作用。标题本身不会随着下方滑块变化,也不会因为斜体或下划线开关变化而改变。也就是说,用户操作的对象不是整页文字,而是中间那段作为示例的排版文字。把标题和预览文字分开,是这个页面层次清晰的原因之一。

标题下面是预览区域。它不是一行孤零零的文字,而是一块带浅色背景和圆角的内容卡片。卡片内部留有较大的内边距,使文字和边缘之间保持呼吸空间。预览文字默认使用 26 的字号,普通字形,不带下划线。用户改变字号时,卡片的内容会变大或变小;用户打开斜体时,文字字形倾斜;用户打开下划线时,文字底部出现装饰线。背景颜色、圆角和内边距不会因为这些操作而改变。

字号控制行紧接在预览卡片下面。左侧是“字号”标签,中间是可以拖动的滑块,右侧是当前数值。滑块占据这一行的大部分宽度,标签和数字则提供操作含义与结果提示。用户不需要猜测滑块的当前值,因为右侧数字会同步变化;用户也不需要通过观察文字大小来估算数值,因为数值直接显示出来。

再往下是开关行。第一组由“斜体”文字和一个开关组成,第二组由“下划线”文字和另一个开关组成。两个开关位于同一行,分别对应两个独立的样式状态。打开斜体不会自动打开下划线,关闭下划线也不会影响斜体。这样的排列让用户可以组合出普通、斜体、下划线、斜体加下划线四种主要状态。

底部的灰色说明文字提供一个固定的能力提示。它说明当前页面使用默认的 HarmonyOS Sans,并以等宽字体的描述作为页面信息的一部分。这个说明不会因为滑块或开关改变而变化,它更像是当前预览环境的静态标签,而不是一个可操作的字体选择器。

二、预览文字为什么是页面的核心

页面真正发生样式变化的对象只有“HarmonyOS 字体排版预览”这一段文字。它同时承担示例内容和状态展示两项职责。用户拖动字号滑块时,首先看到的是文字尺寸变化;打开斜体时,看到的是字形倾斜;打开下划线时,看到的是文字装饰变化。由于示例文本始终保持不变,用户很容易把前后两次画面进行比较。

固定示例文字还有一个好处:它避免了输入内容不同造成的干扰。如果每次输入的字符串长度都不同,用户很难判断变化来自字号还是内容长度。当前页面不设置输入框,也不允许替换预览文字,因此所有测试都围绕同一句话展开。页面的目标不是编辑文案,而是观察样式。

预览卡片采用浅色背景,是为了让文字边界更容易被看见。背景并不是状态颜色,打开开关时不会换色;圆角也不是交互反馈的一部分。它们只负责把预览对象从白色页面中区分出来。这样处理之后,字号、斜体和下划线成为最显眼的变化,其他视觉因素不会抢走注意力。

预览文字的字号默认是 26,这个值位于滑块范围中间偏上的位置。初始状态下文字足够醒目,又不会因为过大而挤压卡片。拖到较小值时,卡片中会留下更多空白;拖到较大值时,文字会更突出,用户可以观察大字号在固定内边距中的视觉占比。由于页面只有一段文字,字号变化不会触发列表滚动、分页或其他复杂布局变化。

三、字号滑块的实际行为

字号是这个页面唯一的连续数值状态。滑块的最小值为 14,最大值为 48,每次变化步长为 2,初始值为 26。14 可以作为较小但仍可阅读的预览字号,48 则足以显示明显的大字效果;步长为 2 则避免产生过多小数或难以区分的相邻值。

用户拖动滑块时,页面会持续接收变化值。只要滑块停在新的位置,右侧数字就会显示对应值,预览卡片中的文字也会采用同一个字号。这里存在两个同步结果:一个是数值文字同步,另一个是示例文字的视觉同步。两者使用同一份字号状态,因此不会出现右侧显示 30、卡片仍然看起来像 26 的情况。

字号数字以文本形式显示在滑块右侧,方便用户在拖动过程中确认结果。它不是单独的输入框,不能直接点击后键入数字;页面也没有加号、减号或重置按钮。需要回到默认大小时,用户可以把滑块拖回初始位置附近,或者重新打开页面恢复初始状态。当前页面没有保存上一次字号的机制。

步长为 2 的设计会让可能出现的值保持规整,例如 14、16、18,一直变化到 48。对于排版观察来说,这种变化足够细腻,又不会因为连续的小数变化让用户难以判断。拖动到边界时,最小和最大值会成为清晰的测试点:在 14 时文字最小,在 48 时文字最大,中间的开关仍然可以正常操作。

字号变化只影响预览文字的大小,标题、字号标签、当前数字、开关标签和底部说明仍使用自己的固定字号。这个差异很重要。如果滑块同时改变整页所有文字,控制项也会跟着变大或变小,用户就难以观察预览对象本身。当前页面把“被预览的文字”和“控制页面的文字”区分开,操作含义更明确。

四、斜体开关对应的变化

斜体开关默认关闭。开关打开后,预览文字使用斜体样式;开关关闭后,预览文字恢复普通样式。这个变化只发生在预览文字上,页面标题不会跟着倾斜,底部说明也不会改变。开关旁边的文字始终保持“斜体”,让用户知道这项控制对应哪个属性。

斜体是一种布尔状态,只有打开和关闭两个结果。与字号不同,斜体没有中间过程,也没有强度调节。用户点击开关后,可以立刻在卡片中看到字形的倾斜方向发生变化。如果当前字号较大,倾斜效果更容易看清;如果字号较小,用户仍可通过前后状态比较来确认开关是否生效。

斜体和字号是两个互不替代的维度。大字号不等于斜体,小字号也不意味着普通字形。用户可以先把字号调到 36,再打开斜体,也可以保持字号 14 后只测试斜体。无论操作顺序如何,最终页面都应该由当前字号和斜体状态共同决定,而不是由最后一次操作覆盖之前的设置。

斜体开关没有修改示例文字的内容,也没有改变卡片背景、圆角或页面颜色。它只调整文字呈现方式。这样的反馈范围很克制,适合用来展示一个样式属性如何独立影响界面。

五、下划线开关对应的变化

下划线开关同样默认关闭,打开后会为预览文字增加下划线装饰。下划线的位置与文字内容相连,用户可以直接看见文字下方出现一条线;关闭后,这条线消失。它与斜体开关互不影响,两个开关都可以同时打开。

下划线的视觉变化会受到字号影响。字号较小时,下划线与文字靠得更近,整体变化比较紧凑;字号较大时,文字和下划线一起占据更明显的视觉区域。用户可以通过先调整字号再切换下划线,观察同一种装饰在不同大小下的表现。这种组合操作仍然只改变预览卡片内容,控制栏和底部说明保持稳定。

下划线不是按钮状态的装饰。开关本身会显示自己的开合状态,预览文字则显示下划线效果,两者共同构成一条完整反馈链路。用户不必依赖开关颜色猜测结果,只要观察卡片文字就可以确认样式是否真正应用。

斜体和下划线同时打开时,预览文字会同时倾斜并带有下划线。这个状态很适合检查多个独立布尔状态是否能同时生效。关闭其中一个开关时,另一个效果仍然保留。例如保持斜体打开、关闭下划线,文字应该仍然倾斜,但底部装饰线消失;反过来也一样。

六、四种常见组合状态

两个样式开关各有开、关两种状态,因此页面至少可以观察四种清晰组合。第一种是普通文字:斜体关闭、下划线关闭,这是页面首次打开时的默认状态。第二种是斜体文字:只打开斜体,文字倾斜但没有下划线。第三种是下划线文字:只打开下划线,文字保持普通形态但带下划线。第四种是强调组合:两个开关都打开,文字同时具备倾斜和下划线。

这四种状态之间切换时,字号数值应该保持不变。比如当前字号已经调到 40,用户打开斜体,再打开下划线,右侧仍然显示 40;关闭斜体时,下划线仍然存在;关闭下划线时,斜体仍然保留。这样的行为说明每个开关只负责自己的样式属性。

组合测试也能帮助发现误操作。如果打开斜体的同时下划线被意外关闭,说明两个状态之间存在不必要的耦合;如果关闭一个开关后整段文字回到默认大小,说明样式更新影响了不该影响的状态。当前页面的交互目标很简单,因此每一次操作的影响范围也应该非常明确。

七、页面布局中的间距和层级

页面使用垂直排列,让用户按照“标题—预览—字号—样式开关—说明”的顺序阅读。根内容之间保持固定的纵向间距,预览卡片拥有自己的内边距,字号行内部则通过横向排列把标签、滑块和数字放在同一条基线上。这样的层级可以减少用户寻找控制项的时间。

预览卡片是页面的视觉中心。它与上方标题之间留出空隙,与下方滑块之间也保持间隔。卡片内部的内边距让文字不会紧贴圆角边缘,字号较大时仍然有足够的留白。由于卡片宽度跟随页面内容区域,用户可以在同一张卡片中观察不同字号,而不需要横向滚动。

字号行的滑块使用剩余空间,左侧标签和右侧数字占据相对稳定的宽度。这样无论当前数值是个位还是两位数,滑块都不会因为数字变化而明显跳动。用户拖动滑块时,手指关注的是中间轨道,眼睛关注的是右侧数字和卡片文字,三者之间形成自然的操作路径。

开关行把两个控制项放在同一行,第一项的文字占据较多空间,第二项在左侧保留间距。两个开关不会拥挤到卡片中,也没有独立的大按钮背景。对于只有两个布尔属性的页面来说,这样的紧凑布局足以表达控制关系,同时让页面保持轻量。

底部说明使用较小字号和灰色文字,视觉权重低于标题和预览卡片。它不是状态提示,也不随着交互变化,因此放在最后可以避免用户把它误认为操作结果。说明文字与页面边缘保持同样的水平对齐,使整体布局具有统一的边界。

八、状态驱动界面的阅读方式

这个页面适合用声明式思路理解。用户看到的画面不是手动一步步修改出来的,而是当前字号、斜体状态和下划线状态共同描述出来的结果。当字号发生变化时,预览文字根据新的字号显示;当斜体状态发生变化时,预览文字根据新的样式显示;当下划线状态发生变化时,预览文字根据新的装饰显示。

可以把页面想象成一张状态表。字号记录当前数字,斜体记录是否倾斜,下划线记录是否装饰。页面显示的是这三项记录的组合。操作控件只负责改变其中一项,预览区域负责反映组合后的结果,其他固定文字负责解释页面。这种分工让页面逻辑容易观察,也容易用不同组合进行验证。

滑块的变化是连续的,开关的变化是离散的,但它们最终都通过同一条路径影响预览文字。拖动滑块时,字号不断更新;点击开关时,布尔值在真和假之间切换。无论哪种方式,用户都能在界面上获得立即反馈。页面没有额外的提交按钮,因此操作结果不会被延迟到另一个步骤。

这种即时更新尤其适合预览场景。用户不需要先选参数、再点击应用、最后等待结果,而是边拖动边观察。对于字号这种需要比较视觉效果的参数,连续反馈比一次性确认更自然;对于斜体和下划线这种明确的开关,点击后立刻变化也能减少不确定感。

九、边界值和重复操作怎么观察

字号范围的两个边界是最直接的检查点。把滑块拖到最左侧,数值应当接近或显示 14,预览文字变为当前范围内的最小字号;把滑块拖到最右侧,数值应当显示 48,预览文字变为当前范围内的最大字号。再次在边界处拖动,不应产生超出范围的数值。

步长为 2 意味着用户拖动到不同位置时,数值应保持在规定的离散序列中。观察数字时,如果出现不符合步长的值,说明滑块值和显示值之间存在转换问题。当前页面不做单位换算,也不把字号转换成百分比,右侧数字就是预览使用的字号值。

开关的重复点击也很有代表性。连续打开、关闭斜体,预览文字应该在普通和倾斜之间来回切换;连续打开、关闭下划线,下划线应该出现和消失。快速操作时,两个开关的状态不应该互相覆盖,最后一次点击只影响对应的那个属性。

在字号变化过程中切换开关,可以观察连续状态和布尔状态能否稳定组合。例如先拖到 32,再打开斜体,再拖到 44,斜体应该保留;再打开下划线,两个效果同时存在;最后拖回 20,两个样式仍然保留,只是文字大小改变。这个过程比只测试一次点击更能体现页面状态的独立性。

页面没有错误提示、加载提示和网络失败分支,因为所有变化都发生在本地界面状态中。用户不需要等待远程数据,也不会因为网络条件不同而看到不同结果。测试重点因此应该放在数值边界、组合状态和视觉更新,而不是接口重试或数据异常。

十、页面能力边界:它到底预览了什么

页面底部的“默认 · HarmonyOS Sans · 等宽字体”说明容易让人联想到完整字体管理工具,但从页面实际表现看,它并没有提供字体名称列表、字体文件导入或字体家族切换。用户可以调整字号、斜体和下划线,却不能在页面中选择另一种字体,也不能输入自定义字体名称。

同样,页面没有展示真实字体文件加载过程。它不包含字体下载、字体安装、字体注册、字体授权检查或远程资源请求。所谓预览,是在当前运行环境下对固定文字应用几种文本样式,帮助用户观察排版变化。把它理解为轻量的样式预览页面更准确,而不是完整的字体管理器。

页面也没有文字输入框,因此不能测试任意中文、英文、数字、符号在不同字体下的差异。示例内容始终固定,用户看到的效果与这段文字本身相关。若要研究不同字符集、长段落换行或多行文本高度,还需要增加相应的内容输入和布局,但这些都不属于当前页面已经呈现的能力。

此外,页面没有保存按钮、分享按钮、导出图片功能,也没有把当前样式保存为模板。关闭页面后,字号、斜体和下划线不会被当作长期配置保留下来。当前页面适合即时观察,不适合承担字体设计稿管理或排版方案归档。

这些边界并不是缺点,反而使页面的主题更加集中。它把一个复杂的字体工具拆成最基本的可见交互:固定文字、一个连续字号控制、两个独立样式开关。读者在学习状态绑定时,不会被网络、数据库、文件选择和跨页导航等无关内容分散注意力。

十一、为什么不应该把未出现的功能写进文章

在介绍一个小型页面时,最容易出现的问题是把“可以扩展”写成“已经实现”。例如看到页面底部写着字体名称,就直接描述成“支持多字体切换”;看到字号滑块,就延伸成“支持字体排版模板”;看到预览卡片,就说成“支持导出设计稿”。这些说法都超出了当前用户实际能操作的范围。

更准确的写法应该先描述能看到、能操作、能验证的部分。用户打开页面可以看到固定示例文字,可以拖动字号滑块,可以看到数值变化,可以切换斜体,可以切换下划线,可以观察组合效果。至于真实字体加载、自定义字体导入、文字编辑和图片导出,只能作为未来方向简单提及,不能当作当前能力。

这种边界意识对技术文章尤其重要。读者通常会根据文章描述去尝试页面,如果文章写了不存在的按钮或流程,读者会在实际操作中找不到对应入口,文章可信度就会下降。围绕实际页面写作,意味着每一个动作都能在界面上找到对应控件,每一个结果都能在预览区域或数值标签中观察到。

当前页面的固定底部说明也应该如实解释。它是页面上的一行静态文字,不是字体选择结果,不会随滑块和开关改变。即使文字中出现“等宽字体”描述,也不能因此推断页面加载了专用等宽字体文件。文章可以说明这是页面当前的说明标签,但不能把它包装成字体资源管理能力。

十二、从使用者角度走一遍完整操作

第一次打开页面时,用户看到标题、默认字号 26 的预览文字、关闭状态的两个开关,以及底部说明。此时最适合先观察预览卡片的基本样式:浅色背景、圆角边缘、内边距和普通文字。页面没有弹窗,也没有额外的引导步骤,用户可以直接开始操作。

接下来可以拖动字号滑块。向左拖,右侧数字逐步降低,卡片中的文字变小;向右拖,数字升高,文字变大。拖动停止后,数字和文字应保持一致。把滑块放在中间某个位置,再观察卡片和右侧数字,可以确认字号不是只在松手后一次性改变,而是随着滑块变化持续反馈。

然后打开斜体开关。此时文字倾斜,但字号保持刚才的数值。再打开下划线,文字在保持倾斜的同时增加下划线。关闭斜体后,下划线应该继续存在;关闭下划线后,文字回到普通样式。这个操作顺序能证明两个开关分别管理两个属性。

如果把字号拖到最大值,再切换两个开关,可以观察大字号下的组合效果;如果拖到最小值再操作,则能观察小字号下装饰线和倾斜效果是否仍然清晰。最后重新打开页面,可以确认页面每次进入时回到固定的初始状态,而不是延续上一次操作结果。

整个过程没有提交、保存、同步或等待步骤。每一次操作都直接作用于当前页面,用户的注意力始终集中在预览文字本身。这种交互节奏非常适合教学演示,也适合在学习状态绑定时作为第一个可运行练习。

十三、适合初学者观察的界面概念

这个页面把状态数量控制在三个:一个数字、两个布尔值。数字适合绑定到滑块和文字字号,布尔值适合绑定到开关和样式判断。初学者可以从这三个状态开始理解,为什么改变一个值会让依赖它的控件和文本同时更新。

页面中的标题、预览文字、标签和说明都属于文本显示;字号行和开关行属于横向排列;整页属于纵向排列。通过观察这些区域的层级,初学者可以理解容器负责布局,文本负责显示,滑块和开关负责交互,而状态负责把交互结果传递给显示内容。

滑块的变化回调只需要更新字号值,开关的变化回调分别更新斜体和下划线状态。界面不需要手动查找预览文字,也不需要直接调用“把文字改成斜体”的命令。预览文字的样式由当前状态描述,状态变化后界面自动呈现新的结果。这就是声明式界面最直观的学习入口。

另一个值得观察的地方是,同一个字号状态被两个地方使用:滑块的当前值和预览文字的字号。右侧数字也使用它来显示结果。一个状态同时驱动多个视觉位置,可以帮助理解状态共享与界面一致性。当数字与文字始终同步时,用户会更容易相信页面反馈。

两个布尔状态则展示了状态拆分。斜体只影响斜体属性,下划线只影响装饰属性。把它们拆成两个独立状态,比用一个“样式模式”去表示四种组合更容易阅读,也更容易维护。对于这样的小页面,状态名称和职责的清晰度比复杂抽象更有价值。

十四、视觉变化和可读性之间的关系

字号变大后,预览文字更突出,但卡片中的空白会相对减少;字号变小时,卡片显得更宽松,但文字的视觉重量降低。这个变化可以帮助观察内边距和字号之间的关系。固定内边距使卡片边缘保持稳定,变化只集中在文字尺寸上,因而容易分辨。

斜体会让文字的横向轮廓发生变化。某些字符的倾斜会让行尾位置看起来略有不同,但页面没有长段落,因此不会出现复杂换行。下划线则增加了文字底部的视觉线条,在浅色卡片上比较明显。两种效果叠加时,文字的识别仍然保持清楚。

控制项使用较小的固定字号,目的是让它们承担说明和操作职责,而不是和预览文字竞争。即使预览字号调整到 48,“字号”标签、当前数值、斜体标签、下划线标签和底部说明也仍然保持各自的大小。这样的稳定性能够帮助用户把注意力放在被预览的对象上。

颜色也服务于层级。页面背景白色,卡片使用很浅的蓝灰色,底部说明使用灰色。没有大量彩色状态卡片,也没有把开关操作结果写成复杂提示。对于一个以文字外观为中心的页面来说,克制的颜色可以让字体形态更容易被观察。

十五、常见误解和排查思路

有时用户拖动滑块后,觉得文字变化不明显。这通常不是滑块没有工作,而是当前字号差异较小,或者屏幕比例让变化不容易比较。可以把滑块分别拖到最小值和最大值,再观察卡片中的文字,差异会更清楚。也可以先打开斜体或下划线,让前后状态更容易定位。

如果右侧数字发生变化而文字看起来没有变化,应先确认观察对象是中间预览卡片中的文字,而不是顶部标题或底部说明。只有预览文字使用滑块字号,其他文本保持固定大小。把标题当作观察对象,会产生“滑块无效”的错觉。

如果斜体开关打开后没有看到明显倾斜,可以把字号先调大,再重新开关一次。不同字形在小字号下的倾斜差异并不总是醒目,但状态仍然会按照开关变化。下划线则可以通过开、关两次确认,观察文字底部装饰线是否出现和消失。

如果两个效果同时出现,页面仍然只显示一段文字,并不会弹出状态提示。它的反馈方式就是文字本身的外观变化。不要期待出现“已应用”“已保存”之类的消息,因为当前页面没有独立的状态消息区域,也没有保存动作。

页面重新进入后恢复默认值也是预期行为。它没有长期配置存储,操作只存在于当前页面会话中。把恢复默认误认为数据丢失并不准确,因为页面的定位就是临时预览,而不是设置中心。理解这一点,可以避免给简单页面增加不必要的持久化逻辑。

十六、页面为什么没有加入更多按钮

一个字体预览页面很容易继续增加功能:增加字体选择下拉框、增加文字输入、增加颜色选择、增加行高、增加字距、增加对齐方式、增加保存和分享。但功能越多,页面的核心目标越容易被分散。当前页面只保留字号、斜体和下划线,正好形成一个最小但完整的排版观察闭环。

字号负责大小,斜体负责字形倾斜,下划线负责文字装饰。三个维度都能在预览区域直接看到,且互相之间有清晰边界。用户可以在很短的时间内完成一轮操作,页面也不需要滚动到很长的控制面板。对于学习和演示来说,这种约束比“什么都能调”更容易理解。

没有加入输入框还有一个现实原因:输入内容会带来键盘、光标、清空、长度、换行和焦点等额外问题。当前页面的重点是样式状态,而不是文本编辑。如果未来需要测试不同文字,只需在保持样式逻辑不变的前提下增加输入区域即可,但那会成为另一个更复杂的交互主题。

没有加入真实字体加载,则是因为当前页面没有字体资源选择和加载流程。它展示的是默认环境下的固定文字样式,不负责管理外部字体。把不存在的加载过程写进说明,会让读者误以为可以从页面切换字体家族,反而破坏文章与实际界面的一致性。

十七、用于实际观察的检查表

可以按照下面的顺序观察页面,整个检查只围绕当前真实控件和可见结果进行。

第一,确认打开页面后标题为“字体预览”,预览文字为“HarmonyOS 字体排版预览”,初始字号数字为 26,两个开关均为关闭。

第二,把滑块向左移动,确认数字降低,预览文字同步变小;再向右移动,确认数字升高,预览文字同步变大。

第三,把滑块移到最小和最大位置,确认数值不超过 14 到 48 的范围,且变化按照 2 的步长进行。

第四,只打开斜体,确认文字倾斜而下划线没有出现;关闭斜体,确认文字恢复普通样式。

第五,只打开下划线,确认文字出现下划线而没有倾斜;关闭下划线,确认装饰线消失。

第六,同时打开两个开关,确认文字同时具备倾斜和下划线;随后关闭其中一个,确认另一个效果仍然保留。

第七,在保持两个开关打开的情况下改变字号,确认样式效果没有因为字号改变而被重置。

第八,观察标题、控制项和底部说明,确认它们不会跟随预览文字字号变化,也不会被斜体或下划线开关改变。

第九,重新进入页面,确认页面回到 26、普通字形、无下划线的初始状态。这个结果与页面没有长期保存设置相符。

这些检查不需要网络、不需要登录、不需要选择设备,也不需要准备额外数据。只要能看到页面,就能完成对核心行为的观察。

十八、从这一个页面得到的实际经验

第一,状态应该贴近真实需求。这里的需求不是“保存一份完整字体配置”,而是“让用户看到字号和两种样式变化”,因此三个状态已经足够。状态少并不代表设计简单,关键是每个状态都能对应明确的视觉结果。

第二,控件旁边的数字很有价值。滑块本身只能提供相对位置,数字让用户知道具体字号。对于需要反复比较的预览工具,数值提示能让操作更可重复。用户可以记住某个值,再拖回同一个位置,而不是凭手感寻找。

第三,组合状态必须保持独立。斜体和下划线可以同时存在,说明它们不是互斥选项。把彼此独立的属性拆开,用户更容易形成预期,页面也更容易扩展到其他独立样式。

第四,静态说明要和真实能力一致。底部说明只描述当前默认环境,不应该被理解为字体资源选择器。界面文案如果说得太大,用户就会期待更多不存在的功能;文案保持克制,反而能提升可信度。

第五,预览类页面应该尽量缩短反馈路径。拖动就变化、点击就变化,用户可以立即比较前后效果。没有额外确认按钮并不意味着缺少功能,而是符合即时预览的交互目的。

第六,边界要明确。字号范围、步长、初始值、开关默认值都可以被观察和复现。边界清晰后,页面行为不会依赖模糊的“差不多”,也便于读者理解每个控件的责任。

十九、适合作为后续扩展的方向,但不属于当前页面

如果未来需要把这个页面发展成更完整的排版工具,可以在保持当前三项状态稳定的前提下增加输入文字、字体家族选择、字重选择、文字颜色、行高、字距和对齐方式。但每增加一项能力,都需要同时增加可见控件、状态反馈和边界说明,不能只在文章中描述而不在页面中提供入口。

如果增加真实字体加载,还需要处理字体资源来源、加载失败、字体不可用、授权限制和加载完成后的显示变化。那将不再是当前页面这种纯本地样式预览,而是包含资源管理过程的新页面。当前文章只说明页面已有的默认字体预览,不把这些未来能力写成当前功能。

如果增加保存或导出,则需要决定保存什么:是保存字号和样式组合,还是保存完整文字和字体信息;导出的是图片、文本还是配置。不同选择会带来不同的交互和数据结构。当前页面没有这些入口,因此用户操作完成后只看到当下的预览结果。

如果增加多行或长文本,还需要重新观察卡片高度、换行、滚动和不同屏幕宽度下的表现。当前页面只有固定的一段文字,布局问题相对集中,适合先理解基础状态,再决定是否扩展复杂内容。

二十、结语

这个字体预览页面没有试图覆盖完整的字体管理流程,而是把排版观察缩小到三个可见变化:字号、斜体和下划线。打开页面后,用户可以看到固定的示例文字;拖动字号滑块,右侧数字和预览文字同步变化;切换两个开关,文字分别呈现倾斜和下划线效果;两个开关也可以同时打开,形成组合样式。

页面的价值就在于反馈直接、状态清晰、边界明确。字号有 14 到 48 的范围和 2 的步长,初始值是 26;斜体和下划线各自独立,默认都是关闭;标题、控制项和底部说明保持固定,不会被预览样式牵连。用户不需要登录、联网或准备数据,就能完成一轮完整观察。

字体样式切换后的页面状态

如果把这类页面作为声明式界面学习样例,最值得记住的不是某个复杂 API,而是如何让一个状态对应一个明确结果:数字状态对应字号,布尔状态对应样式,预览区域负责显示组合后的效果。页面没有真实字体文件加载、没有自定义字体导入、没有文本编辑和长期保存,这些边界同样应该被准确说明。

页面实现细节示意

对于 CSDN 读者来说,一篇独立的技术文章应该能让人只看当前页面就明白它能做什么、怎么操作、每个控件会带来什么变化,以及哪些能力并不存在。围绕这四个问题展开,文章就不会被无关的目录信息、内部文件说明或泛化口号带偏,也能让读者在实际运行页面时得到一致的体验。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐