当前位置:   article > 正文

鸿蒙App开发,被极致优化的Text组件!_鸿蒙java开发字体属性设置

鸿蒙java开发字体属性设置

​与安卓相比,鸿蒙对文本Text进行了优化和功能拓展,下面先介绍新增API。

一、新增强大特性

1、 自动调节字体大小

在进行设备适配时,为了视觉效果更好,有时候我们希望字体大小能够随着内容空间进行自适应。

在安卓中我们需要先计算内容显示区域尺寸,然后根据尺寸计算文字大小,非常麻烦。鸿蒙对此进行了优化,并提供了2个快捷API:字体自动适配开关和字体适配规则。

Xml用法

自动适配开关xml属性写法:

  1. // 该值默认是false
  2. ohos:auto_font_size="true"

字体适配规则,xml并未提供属性写法。

Java用法

自动适配开关,提供了两个方法:

方法一:

text.setAutoFontSize(boolean autoFontSize)

参数:autoFontSize代表是否自动适配,开启就会生效。

方法二:

text.setAutoFontSize(boolean autoFontSize, boolean userSizeFirst)

参数1:autoFontSize代表是否自动适配。

参数2:userSizeFirst代表用户设置的尺寸优先,开启自动适配后,如果该参数设置为true,开发者在xml属性或者java代码设置过Text的具体大小,那么字体大小不会进行自动缩放。

字体适配规则:

该方法主要用来限制字体缩放边界,以免影响字体呈现效果。

text.setAutoFontSizeRule(int minFontSize, int maxFontSize, int autoFontStep)

参数如下表:

minFontSize代表缩放时最小字体大小
maxFontSize代表缩放时最大字体大小
autoFontStep代表每一次进行缩放字体大小的步长值

下面看一个官方实例,每点击一次,就会按照设置的步长进行字体缩放,适应组件内容区域:

  1. // xml布局定义
  2. <Text
  3. ohos:id="$+id:text"
  4. ohos:width="90vp"
  5. ohos:height="match_content"
  6. ohos:min_height="30vp"
  7. ohos:text="T"
  8. ohos:text_color="#0000FF"
  9. ohos:italic="true"
  10. ohos:text_weight="700"
  11. ohos:text_font="serif"
  12. ohos:multiple_lines="true"
  13. ohos:max_text_lines="1"
  14. ohos:auto_font_size="true"
  15. ohos:right_padding="8vp"
  16. ohos:left_padding="8vp"
  17. ohos:background_element="$graphic:background_text"/>
  18. // java代码控制
  19. Text text = (Text) findComponentById(ResourceTable.Id_text);
  20. // 设置自动调整规则
  21. text.setAutoFontSizeRule(30, 100, 1);
  22. // 设置点击一次增多一个"T"
  23. text.setClickedListener(new Component.ClickedListener() {
  24. @Override
  25. public void onClick(Component component) {
  26. text.setText(text.getText() + "T");
  27. }
  28. });

效果图如下:


二、文本选择器相关API已经优化

具体内容放在TextField介绍中讲解。


三、文本展示效果优化

1、 优化了跑马灯效果

关于跑马灯效果,用过安卓系统api的同学Q个1,反正那啥……

现在鸿蒙优化了,整体效果还不错。

Xml用法

  1. // 设置效果为跑马灯
  2. ohos:truncation_mode="auto_scrolling"
  3. // unlimited代表不限制次数,如果要设置具体次数传入整形数字即可
  4. ohos:auto_scrolling_count="unlimited"
  5. // 设置一个周期时长
  6. ohos:auto_scrolling_duration="1000"

Java用法

  1. text.setTruncationMode(Text.TruncationMode.AUTO_SCROLLING);
  2. // 设置跑马灯效果执行一个周期的时间,本质上也就是设置动画执行一个周期的速度,不设置会有一个默认的速度
  3. text.setAutoScrollingDuration(1000);
  4. // 设置跑马灯效果启动后执行多少次,Text.AUTO_SCROLLING_FOREVER=-1,代表无限次,一直重复
  5. text.setAutoScrollingCount(Text.AUTO_SCROLLING_FOREVER);
  6. // 启动跑马灯
  7. text.startAutoScrolling();

注意:跑马灯效果要生效,那么显示的文本内容必须要超出Text显示区域,并且,无论是xml配置还是java代码,都必须用java代码调用startAutoScrolling方法启动。

效果如图所示:

 

2、 新增了一些系统内置字体效果

例如:

HwChinese-medium

sans-serif-medium

sans-serif-condensed

sans-serif-condensed-medium

xml属性通过text_font可以设置,实际开发中作用不大,这里就不演示了。


​四、问题API

首先,说一下发现的问题:

安卓中,TextView设置文本内容颜色时候可以设置颜色选择器selector,当TextView状态改变时可以自动切换文本颜色。

但是!不知道为啥,鸿蒙把这个功能阉阉割了!

反正作者是想不明白,这个功能在安卓开发时使用频率也挺高的,难道是鸿蒙开发者发现了什么隐藏bug???

目前Text设置文字颜色的xml属性,还有java代码,都只能设置单一的颜色值。

解决方法:需要监听Text自身状态切换,然后重新设置颜色,有代码洁癖的我,觉得有点尬!

幸好鸿蒙提供了监听组件状态的监听器方法,实现起来也不麻烦,您可以使用类似下面的代码去实现:

  1. Text text = (Text) findComponentById(ResourceTable.Id_text_helloworld);
  2. // 设置状态监听器
  3. text.setComponentStateChangedListener(new Component.ComponentStateChangedListener() {
  4. @Override
  5. public void onComponentStateChanged(Component component, int i) {
  6. if (component.isPressed()) {
  7. text.setText("按下状态");
  8. } else if (component.isSelected()) {
  9. text.setText("选中状态");
  10. } else {
  11. text.setText("正常状态");
  12. }
  13. }
  14. });
  15. // 设置单击
  16. text.setClickedListener(new Component.ClickedListener() {
  17. @Override
  18. public void onClick(Component component) {
  19. text.setSelected(true);
  20. }
  21. });

​五、默认效果调整API

1、 文本内容默认显示行数调整

在安卓中,文本组件默认是多行,鸿蒙调整为单行,如需要显示多行,需要先开启开关,然后设置最多显示的行数。

Xml用法

  1. // 开启多行显示
  2. ohos:multiple_lines="true"
  3. // 设置最大显示行数,最大行数大于1,必须开启多行显示才能生效
  4. ohos:max_text_lines="3"

Java用法

  1. // 开启文本多行显示,默认值为false
  2. text.setMultipleLine(boolean multiple);
  3. // 设置文本最大显示的行数大于1,只必须开启多行显示才能生效
  4. text.setMaxTextLines(int maxLines);

六、常规API

Text常用功能API与安卓类似,如下:

1、 设置文本内容

  1. // xml属性方式
  2. ohos:text="Hello World"
  3. ohos:text="$string:mainability_HelloWorld"
  4. // java代码方式
  5. text.setText("Hello World");
  6. text.setText(ResourceTable.String_mainability_HelloWorld);

2、 设置文本内容颜色

  1. // xml属性方式
  2. ohos:text_color="#FF0000"
  3. ohos:text_color="$color:color_1"
  4. // java代码方式
  5. text.setTextColor(Color color);

3、 设置字体大小

  1. // xml属性方式
  2. ohos:text_size="20fp"
  3. // java代码方式
  4. // 1个参数方法,字体大小单位为px
  5. text.setTextSize(20);
  6. // 2个参数方法,第二个参数为单位,字体推荐使用FP
  7. text.setTextSize(20, Text.TextSizeType.FP);

这里就列举3个最常用的,其他的方法就不过多赘述。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/220268
推荐阅读
相关标签
  

闽ICP备14008679号