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

一、新增强大特性

1、 自动调节字体大小

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

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

Xml用法

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

// 该值默认是false
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 代表每一次进行缩放字体大小的步长值

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

// xml布局定义
<Textohos:id="$+id:text"ohos:width="90vp"ohos:height="match_content"ohos:min_height="30vp"ohos:text="T"ohos:text_color="#0000FF"ohos:italic="true"ohos:text_weight="700"ohos:text_font="serif"ohos:multiple_lines="true"ohos:max_text_lines="1"ohos:auto_font_size="true"ohos:right_padding="8vp"ohos:left_padding="8vp"ohos:background_element="$graphic:background_text"/>
// java代码控制
Text text = (Text) findComponentById(ResourceTable.Id_text);
// 设置自动调整规则
text.setAutoFontSizeRule(30, 100, 1);
// 设置点击一次增多一个"T"
text.setClickedListener(new Component.ClickedListener() {@Overridepublic void onClick(Component component) {text.setText(text.getText() + "T");}
});  

效果图如下:


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

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


三、文本展示效果优化

1、 优化了跑马灯效果

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

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

Xml用法

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

Java用法

text.setTruncationMode(Text.TruncationMode.AUTO_SCROLLING);
// 设置跑马灯效果执行一个周期的时间,本质上也就是设置动画执行一个周期的速度,不设置会有一个默认的速度
text.setAutoScrollingDuration(1000);
// 设置跑马灯效果启动后执行多少次,Text.AUTO_SCROLLING_FOREVER=-1,代表无限次,一直重复
text.setAutoScrollingCount(Text.AUTO_SCROLLING_FOREVER);
// 启动跑马灯
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自身状态切换,然后重新设置颜色,有代码洁癖的我,觉得有点尬!

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

Text text = (Text) findComponentById(ResourceTable.Id_text_helloworld);
// 设置状态监听器
text.setComponentStateChangedListener(new Component.ComponentStateChangedListener() {@Overridepublic void onComponentStateChanged(Component component, int i) {if (component.isPressed()) {text.setText("按下状态");} else if (component.isSelected()) {text.setText("选中状态");} else {text.setText("正常状态");}}
});
// 设置单击
text.setClickedListener(new Component.ClickedListener() {@Overridepublic void onClick(Component component) {text.setSelected(true);}
});

​五、默认效果调整API

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

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

Xml用法

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

Java用法

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

六、常规API

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

1、 设置文本内容

// xml属性方式
ohos:text="Hello World"
或
ohos:text="$string:mainability_HelloWorld"
// java代码方式
text.setText("Hello World");
或
text.setText(ResourceTable.String_mainability_HelloWorld);

2、 设置文本内容颜色

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

3、 设置字体大小

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

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

鸿蒙App开发,被极致优化的Text组件!相关推荐

  1. 鸿蒙App开发(1)---初识鸿蒙开发

    [摘要] 鸿蒙App开发 搭建鸿蒙开发环境首先,我们需要安装Java JDK,博主后续的讲解大部分都是用Java语言开发鸿蒙App,所以系统中必须有Java JDK,安装地址:https://www. ...

  2. 鸿蒙APP开发入门到进阶 | 入门完整篇。

    大家好,我是 码工,一个有十年工作经验的码农,一心追求技术. 先说说我的开发经历,10年毕业,到目前已经十多年开发经验,大学学习了多种语言,Java,Android,c,c++,到毕业时真正掌握了几乎 ...

  3. 零基础学习鸿蒙开发,零基础学习鸿蒙App开发 (第一天)

    最近发几条质疑华鸿蒙系统的微头条,受了很多网友的嘲笑,我准备零基础自学App开发,我自己是运维,主要工作是维护Linux和Windows 服务器,同时兼桌面运维和网络. 废话不说,这是今天下午的成果. ...

  4. 【鸿蒙学院】鸿蒙App开发直播学员提问与回答

    最近我做了一场关于鸿蒙的直播,学员非常踊跃,提出了数百个问题,我特意挑出了30个比较典型的问题,并一一回复. Q1.  安卓开发的APP能运行在鸿蒙系统么,鸿蒙和安卓的关系是子集还是扩展或是完全独立不 ...

  5. HarmonyOS图片,HarmonyOS App开发造轮子--自定义圆形图片组件

    一.背景 在采用Java配合xml布局编写鸿蒙app页面的时候,发现sdk自带的Image组件并不能将图片设置成圆形,反复了翻阅了官方API手册(主要查阅了Compont和Image相关的API),起 ...

  6. 鸿蒙APP开发基础知识

    鸿蒙开发基础知识目录 DevEco Studio编辑器de使用 创建新项目 打开一个项目 新建一个文件夹 新建一个布局文件 新建一个Page Ability(Feature Ability) 配置Ab ...

  7. 鸿蒙APP开发入门到进阶 | 聊聊鸿蒙项目结构和使用方法

    大家好,我是 码工,一个有十年工作经验的码农,一心追求技术. 来啦来啦,最近经常有小伙伴问我有关鸿蒙的项目目录结构,让我讲一下鸿蒙开发的目录结构. 今天终于有时间了,给大家详细讲解一下. 主要从两方面 ...

  8. 手机AR APP开发之性能优化

    最近开发了一个手机AR照片墙APP,里面涉及到频繁的屏幕截图.捕捉相机位姿.和网络传输数据,APP时常崩溃,因此就不得不考虑性能优化的问题了.于是去读了汪祥春老师的<AR开发权威指南:基于AR ...

  9. #Android笔记# 超级足球app 开发总结(一)—— 项目组件化与路由的使用

    最近利用业余时间,开发了一款基于懂球帝接口数据的足球资讯app,整体的UI也是仿照懂球帝设计的.这是一个比较综合的项目,用到了不少以前没用过的组件和api,而且产生了很多新的开发思路,有些实现方式也是 ...

  10. 鸿蒙app学习笔记一

    前言 鸿蒙app开发基础知识 鸿蒙应用程序 HAP entry feature pack.info 库文件 资源文件 配置文件(config.json) HAR Node.js NPM 关于DevEc ...

最新文章

  1. Linux下实现多网卡绑定
  2. 《软件构架实践》阅读笔记三
  3. C# CheckBox与RadioButton
  4. 【软件设计师】2020-08-06
  5. python3交互模式下 按上翻箭头显示乱码_CentOS 6.3中,Python-2.7.3交互模式下方向键、退格键等出现乱码...
  6. 谈论源码_当我们谈论开放音乐时,我们指的是什么?
  7. python 类函数 实例函数_python_30期【实例函数 类里面的函数】
  8. 详解Python函数式编程之map、reduce、filter
  9. mysql not in优化_98%的人不知道的MySQL优化器原理
  10. 小米关联公司被列入经营异常
  11. 记一次神奇的sql查询经历,group by慢查询优化(已解决)
  12. torch.eq(input, other, out=None)
  13. 阶段1 语言基础+高级_1-3-Java语言高级_07-网络编程_第2节 TCP协议_2_TCP通信的概述(下)...
  14. 计算机操作系统笔记——线程及其实现
  15. 群晖7.1添加NVME固态硬盘
  16. 认识loadrunner及相关性能参数
  17. ping 简单的测试 延时、抖动、丢包率
  18. 【Proteus仿真】Arduino UNO利用Stepper库实现uln2003驱动步进电机转动
  19. log4cpp的配置
  20. 复旦大学邱锡鹏:若优化顺利,MOSS三月底开源;库克或被踢出苹果董事会;华为云联合CSDN发布智能化编程助手Snap|极客头条

热门文章

  1. 亚马逊云科技助力九号公司推动智能短交通与机器人变革
  2. 用计算机算卷积的规则,信号卷积计算公式与在线计算器_三贝计算网_23bei.com
  3. Lect3_Dynamic_Programming
  4. 区块链资讯 央行发布法定数字货币
  5. 通过搜狗推送实现站群百万蜘蛛的方法
  6. 记得高考时的作文题目是“假如记忆可以移植”
  7. 分享2019年蚂蚁金服面经(已拿Offer)!附答案!!
  8. 《从职场小白到团队老大》读书笔记--上篇
  9. es6与java的相似度_计算两个特征向量相似度的插件(es6.1.1-6.3+)
  10. 未来万亿规模,汽车智能化市场是怎么炼成的?