一种基于隐式渲染的TextView自由缩放方法技术

技术编号:36357513 阅读:12 留言:0更新日期:2023-01-14 18:14
本发明专利技术公开了一种基于隐式渲染的TextView自由缩放方法,通过在安卓应用窗口创建后第一次改变大小时为其中的每个属于TextView类的视图创建属性为不可见的隐式视图,并令隐式视图的属性与TextView类视图保持一致,采用隐式视图动态获取视图在不同显示比例下的显示情况建立视图的字体配置信息,并在视图再次改变大小时根据字体配置信息动态调整视图内的字体大小,实现了当TextView自由缩放时其内部文字的大小能够随它的大小而调整,保证了文字渲染比例与改变前保持一致,进而实现了TextView的自由缩放。现了TextView的自由缩放。

【技术实现步骤摘要】
一种基于隐式渲染的TextView自由缩放方法


[0001]本专利技术属于移动应用开发
,具体涉及一种基于隐式渲染的TextView自由缩放方法。

技术介绍

[0002]安卓系统提供了用于显示文本内容的常用View组件TextView,并为TextView提供了wrap_content属性,wrap_content属性的作用是根据TextVew内显示的内容自适应地调节TextVew的宽度或高度。然而,实际使用中若将TextView宽度的属性设置为wrap_content,那么每次调用TextView的setText方法都会重新布局整个视图树,重新布局整个视图树的过程是由UI线程完成的,因此频繁调用setText方法就可能导致出现由UI线程负载过重所引发的安卓应用窗口卡顿的问题,进而导致用户与安卓应用交互响应的延迟。此外,由于现有安卓应用一般是面向安卓系统开发的,因此安卓系统的使用场景一定程度上决定了安卓应用窗口通常不存在缩放的使用需求。
[0003]当在桌面平台上运行安卓应用时,根据用户使用桌面系统的习惯往往就会产生缩放安卓应用窗口的需求。现有技术中通常采用在桌面平台上安装安卓运行环境的方式运行安卓应用,典型的安卓兼容环境主要包括安卓应用显示单元和安卓应用兼容服务,安卓应用显示单元用于在桌面操作系统上实现安卓应用的用户界面,安卓应用兼容服务用于提供运行于桌面操作系统上的安卓兼容环境,通过安卓应用显示单元与安卓应用兼容服务的相互配合实现安卓应用在桌面操作系统上的有效运行,例如,现有安卓兼容环境的实现方案有xDroid,它包括xDroidUI和xDroidServer,xDroidUI为安卓应用显示单元,xDroidServer为安卓应用兼容服务。
[0004]因此当用户在桌面系统中使用安卓应用时,现有的采用match_content或其他属性开发的固定大小或不支持尺寸调整的安卓应用往往无法满足缩放的需求,可能会导致缩放后的TextView窗口大小与其内部显示文字的尺寸等不匹配,从而为用户的操作带来不便。

技术实现思路

[0005]有鉴于此,本专利技术提供了一种基于隐式渲染的TextView自由缩放方法,能够在自由缩放安卓应用窗口时使安卓应用窗口与Linux应用窗口的大小同步改变。
[0006]本专利技术提供的一种基于隐式渲染的TextView自由缩放方法,具体包括以下步骤:在安卓系统中保存TextView实例创建时采用的构造函数及构造函数使用的参数;当安卓应用窗口创建后第一次改变大小时,获取安卓应用窗口内所有属于TextView类的视图作为目标视图,根据保存的目标视图所采用的构造函数及构造函数使用的参数,为每个目标视图创建属性为不可见的隐式视图,且隐式视图的视图属性与目标视图保持一致,此时显示文字的大小为原始尺寸;分别采用正方形、横屏和竖屏的显示比例重置隐式视图的大小,且满足隐式视图的宽度不大于安卓应用窗口的宽度;获取不同比例下的隐式视图内
的文字字体大小为实验尺寸,当实验尺寸与原始尺寸的差别小于阈值时构建由视图ID、视图显示比例及调整标识1组成的三元组作为字体配置信息,当实验尺寸与原始尺寸的差别不小于阈值时构建由视图ID、视图显示比例及调整标识2组成的三元组作为字体配置信息;所述显示比例为宽与长的相对大小关系;当安卓应用窗口的大小发生变化时,获取变化后的安卓应用窗口的窗口高缩放比例和窗口宽缩放比例,在安卓应用窗口内所有目标视图启动调整大小且未完成调整之前,执行以下步骤:步骤1、根据目标视图的视图ID在字体配置信息中查找,若存在与目标视图相匹配的三元组则执行步骤2;否则执行步骤3;步骤2、判断启动调整大小操作是否改变目标视图的宽或高,若宽或高均未改变则执行步骤3;若宽或高中任一项或两者均发生改变则执行步骤4;步骤3、分别按照窗口高缩放比例和窗口宽缩放比例设定目标视图的高和宽,同时,按照窗口高缩放比例和窗口宽缩放比例中的较小值设定目标视图内文字的大小;步骤4、根据改变后视图的显示比例在字体配置信息中查找三元组,若三元组中调整标识为调整标识1则不改变目标视图内文字的大小仅重新计算换行;若三元组调整标识为调整标识2则计算文字的新文字大小,同时获取文字的排版格式,若为横排版则判断新文字大小设置下文字块的高是否大于改变后视图的高,若大于则迭代衰减新文字大小,直到新文字大小设置下文字块的高不大于改变后视图的高后,设置文字为新文字大小,并重新计算换行;若为竖排版则判断新文字大小设置下文字块的宽是否大于改变后视图的宽,若大于则迭代衰减新文字大小,直到新文字大小设置下文字块的宽不大于改变后视图的宽后,设置文字为新文字大小,并重新计算换行。
[0007]进一步地,所述在安卓系统中保存TextView实例创建时采用的构造函数及构造函数使用的参数的方式为:通过在安卓系统TextView的所有构造函数中增加构造函数属性,采用该构造函数属性保存创建TextView实例时调用的构造函数以及调用构造函数时采用的参数。
[0008]进一步地,所述步骤4中所述新文字大小为文字改变前的大小与较大缩放比例之积,较大缩放比例是指窗口高缩放比例和窗口宽缩放比例中的较大值。
[0009]进一步地,所述属于TextView类的视图包括继承自TextView类的视图。
[0010]进一步地,所述为每个目标视图创建属性为不可见的隐式视图的方式为:根据反射机制采用目标视图的getClass()方法获取目标视图所属的类,再采用目标视图的构造函数及构造函数的参数创建不可见的隐式视图。
[0011]有益效果:本专利技术通过在安卓应用窗口创建后第一次改变大小时为其中的每个属于TextView类的视图创建属性为不可见的隐式视图,并令隐式视图的属性与TextView类视图保持一致,采用隐式视图动态获取视图在不同显示比例下的显示情况建立视图的字体配置信息,并在视图再次改变大小时根据字体配置信息动态调整视图内的字体大小,实现了当TextView自由缩放时其内部文字的大小能够随它的大小而调整,保证了文字渲染比例与改变前保持一致,进而实现了TextView的自由缩放。
具体实施方式
[0012]下面列举实施例,对本专利技术进行详细描述。
[0013]本专利技术提供的一种基于隐式渲染的TextView自由缩放方法,具体包括以下步骤:在安卓系统中保存TextView实例创建时采用的构造函数及构造函数使用的参数。具体来说,可通过在安卓系统TextView的所有构造函数中增加构造函数属性,采用该构造函数属性保存创建TextView实例时调用的构造函数以及调用构造函数时采用的参数。
[0014]当安卓应用窗口创建后第一次改变大小时,获取安卓应用窗口内所有属于TextView类的视图作为目标视图,根据保存的目标视图所采用的构造函数及构造函数使用的参数,为每个目标视图创建属性为不可见的隐式视图,且隐式视图的视图属性与目标视图保持一致,此时显示文字的大小为原始尺寸;分别采用正方形、横屏和竖屏的显示比例重置隐式视图的大小,且满足隐式视图的宽本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于隐式渲染的TextView自由缩放方法,其特征在于,具体包括以下步骤:在安卓系统中保存TextView实例创建时采用的构造函数及构造函数使用的参数;当安卓应用窗口创建后第一次改变大小时,获取安卓应用窗口内所有属于TextView类的视图作为目标视图,根据保存的目标视图所采用的构造函数及构造函数使用的参数,为每个目标视图创建属性为不可见的隐式视图,且隐式视图的视图属性与目标视图保持一致,此时显示文字的大小为原始尺寸;分别采用正方形、横屏和竖屏的显示比例重置隐式视图的大小,且满足隐式视图的宽度不大于安卓应用窗口的宽度;获取不同比例下的隐式视图内的文字字体大小为实验尺寸,当实验尺寸与原始尺寸的差别小于阈值时构建由视图ID、视图显示比例及调整标识1组成的三元组作为字体配置信息,当实验尺寸与原始尺寸的差别不小于阈值时构建由视图ID、视图显示比例及调整标识2组成的三元组作为字体配置信息;所述显示比例为宽与长的相对大小关系;当安卓应用窗口的大小发生变化时,获取变化后的安卓应用窗口的窗口高缩放比例和窗口宽缩放比例,在安卓应用窗口内所有目标视图启动调整大小且未完成调整之前,执行以下步骤:步骤1、根据目标视图的视图ID在字体配置信息中查找,若存在与目标视图相匹配的三元组则执行步骤2;否则执行步骤3;步骤2、判断启动调整大小操作是否改变目标视图的宽或高,若宽或高均未改变则执行步骤3;若宽或高中任一项或两者均发生改变则执行步骤4;步骤3、分别按照窗口高缩放比例和窗口宽缩放比例设定目标视图的高和宽,同时,按照窗口高缩放比例和窗口宽缩放比例中的较小值设定目标视图内文字的大小;步骤4、根据改变后视图的显示比例在字体配置信息中查找三元组...

【专利技术属性】
技术研发人员:温研
申请(专利权)人:北京麟卓信息科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1