CN102375723B - 软键盘皮肤体积优化方法及*** - Google Patents
软键盘皮肤体积优化方法及*** Download PDFInfo
- Publication number
- CN102375723B CN102375723B CN201010247945.5A CN201010247945A CN102375723B CN 102375723 B CN102375723 B CN 102375723B CN 201010247945 A CN201010247945 A CN 201010247945A CN 102375723 B CN102375723 B CN 102375723B
- Authority
- CN
- China
- Prior art keywords
- picture
- whole
- picture element
- keyboard
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Input From Keyboards Or The Like (AREA)
Abstract
本发明提供了一种软键盘皮肤体积优化方法及***,所述方法包括以下步骤:获取皮肤文件中的键盘背景图和键盘前景图;按预设单位大小将所述键盘背景图和键盘前景图拆散成图片元素;将所述图片元素拼接成整图。采用本发明提供的方法及***,能对软键盘的皮肤体积进行有效优化。
Description
【技术领域】
本发明涉及软键盘技术领域,尤其涉及一种软键盘皮肤体积优化方法及***。
【背景技术】
带触摸屏的计算机、移动通信终端(如手机)等通常没有物理键盘,输入法软件需要绘制一套软键盘来模拟物理键盘,通过软键盘接收用户的点击事件,转换为相应字符,完成用户输入。
由于每个用户的输入习惯和偏好各不相同,一套完整的软键盘输入方案通常需要绘制很多键盘。从输入法类别上,一般包括拼音、笔画、英文、字母数字、五笔等,每种输入法的按键布局可能各不相同,所以每种输入法都可能有各自的键盘,此外还有符号、编辑、手写等面板。图6示出了某类输入法的软键盘,用户点击“拼”、“笔”、“英”、“符”等进行键盘切换时,将呈现不同的键盘。在键盘类型上,还有全键盘和数字键盘之分。对于触摸屏手机,竖屏和横屏又有不同的键盘布局。此外,每种键盘可能还有Mini(覆盖部分屏幕)和全屏(覆盖整个屏幕)两种。
用户通常希望软键盘绘制得有立体感(例如有颜色渐变和阴影等)和按键动态效果,也希望输入法能携带尽可能多的皮肤,能满足手机上不同的主体背景和用户的新鲜感。传统方式下,绘制这种比较复杂的皮肤通常都通过贴图来实现但是一套完整的软键盘包含很多键盘(约20个左右),每个键盘都可能有各自不同的背景图和前景图,因此不对键盘皮肤进行优化,将需要大量的键盘背景图和前景图。而要实现软键盘的按键动态效果,键盘的按键有按下、抬起和禁止三种状态或是选中、未选中两种状态,每种状态都有不同的图片。如果不进行优化,实现一套皮肤将需要大量的图片,这些图片的体积在移动通信终端上是不可忽略的。例如,假定软键盘整体尺寸为360*240像素,不考虑优化,将一套皮肤的所有键盘的图片文件都载入内存,内存占用量将在6M以上。如果在键盘切换时再动态加载图片文件,当键盘切换频繁时,文件I/O和图片解码运算又会造成一定延时。因此,过大的皮肤安装包体积,将会增大安装后所占用的内存大小,且在键盘切换频繁时会造成延时,从而影响性能。
【发明内容】
为解决上述问题,有必要提供一种软键盘皮肤体积优化方法。
一种软键盘皮肤体积优化方法,包括以下步骤:获取皮肤文件中的键盘背景图和键盘前景图;按预设单位大小将所述键盘背景图和键盘前景图拆散成图片元素;将所述图片元素拼接成整图。
其中,所述预设单位大小可为单个或多个按键大小,将键盘背景图和键盘前景图拆散成单个或多个按键大小的图片元素。
其中,在按预设单位大小将键盘背景图和键盘前景图拆散成图片元素之后还可以包括去除图片元素中的重复图片的步骤。
上述将图片元素拼接成整图的步骤具体可以是:采用贪心算法和背包算法计算得到整图面积最小的拼接布局;修改配置文件,记录图片元素在整图中的位置,以及更新键盘和所述图片元素的引用关系。
另外,采用贪心算法和背包算法计算得到整图面积最小的拼接布局的步骤具体可以是:A、按照图片高度从大到小将图片元素进行排序;B、按所述排序依次取出图片元素,将图片元素依次填入整图的每一行,直到所有图片元素填入完;C、计算整图的面积,记录所述整图的面积和图片元素的拼接布局;D、以预设步长改变整图的宽度,重复步骤B~C;E、取上述得到的整图中面积最小的整图的宽度和对应的拼接布局。
上述步骤B还可包括:将图片元素填入整图的奇数行时,使图片元素在高度上按顶部对齐;将图片元素填入整图的偶数行时,使图片元素在高度上按底部对齐。
其中,在步骤C之前还可包括:从所述整图的最后一行末尾开始,依次取出图片元素,填入前面各行之间的缝隙中,直到不能填入为止。
此外,还有必要提供一种软键盘皮肤体积优化***。
一种软键盘皮肤体积优化***,包括:图片获取模块,用于获取皮肤文件中的键盘背景图和键盘前景图;图片拆散模块,按预设单位大小将所述键盘背景图和键盘背景图拆散成图片元素;图片拼接模块,将所述图片元素拼接成整图。
其中,所述预设单位大小可为单个或多个按键大小,所述图片拆散模块是将键盘背景图和键盘前景图拆散成单个或多个按键大小的图片元素。
其中,所述图片拆散模块还可用于去除图片元素中的重复图片。
其中,所述图片拼接模块还可用于采用贪心算法和背包算法计算得到整图面积最小的拼接布局;所述***还包括:配置文件模块,修改配置文件,记录图片元素在整图中的位置,更新键盘和所述图片元素的引用关系。
其中,所述图片拼接模块还可用于按图片高度从大到小将图片元素进行排序,按所述排序依次取出图片元素,将图片元素依次填入整图的每一行,直到所有图片元素填入完;以预设步长改变整图的宽度,重复拼接所有图片元素,取上述得到的整图中面积最小的整图的宽度和对应的拼接布局。
其中,所述图片拼接模块还可用于将图片元素填入整图的奇数行时,使图片元素在高度上按顶部对齐;将图片元素填入整图的偶数行时,使图片元素在高度上按底部对齐。
其中,所述图片拼接模块可以包括:图片调整模块,用于从所述整图的最后一行末尾开始,依次取出图片元素,填入前面各行之间的缝隙中,直到不能填入为止。
上述软键盘皮肤体积优化方法及***,通过获取皮肤文件中的键盘背景图和键盘前景图,并将这些图片拆散成各个图片元素,将图片元素拼接成单张的整图,图片数量得到了极大的减少,因此能够优化软键盘皮肤体积,使得软键盘皮肤占用的内存小,在频繁切换键盘时也不会造成延时,提高了运行的性能。
【附图说明】
图1为一个实施例中软键盘皮肤体积优化方法的流程图;
图2为一个实施例中将图片元素拼接为整图的方法流程图;
图3为一个实施例中获取使整图面积最小的拼接布局的方法流程图;
图4为一个实施例中软键盘皮肤体积优化***的结构示意图;
图5为另一个实施例中软键盘皮肤体积优化***的结构示意图;
图6为一个实施例中输入法的软键盘的示意图;
图7为一个实施例中整图的示意图。
【具体实施方式】
如图1所示,一种软键盘皮肤体积优化方法,具体过程如下:
步骤S10,获取皮肤文件中的键盘背景图和键盘前景图。软键盘的皮肤文件是事先人为设计的,不同的输入法或不同风格的软键盘设计会有不同的皮肤文件。皮肤文件中包括键盘背景图、键盘前景图和配置文件,其中,配置文件中记录了图片信息以及键盘和图片之间的引用关系,通常为dat文件,大小可忽略不计。如图6所示,键盘背景图由几十个按键背景组成,其中有些按键背景是相同的。此外,键盘前景图中的按键前景有些也是相同的,如图6中,拼音键盘和英文键盘之间很多按键是重复的,这些按键的前景也是相同的。
步骤S20,按预设单位大小将键盘背景图和键盘前景图拆散成图片元素。在一个优选的实施例中,预设单位大小为单个按键大小,将键盘背景图和键盘前景图拆散成单个按键大小的图片元素。拆散后得到的图片元素中,如果是简单字符(如“abc”、“def”等),可直接绘制,所得到的图片元素体积更小。在另一个实施例中,预设单位大小还可以是多个按键大小,例如以2或3个相邻的按键大小为一个单位拆散键盘背景图和键盘前景图,拆散所得到的图片元素的尺寸可以各不相同。
在一个优选的实施例中,得到拆散后的单个或多个按键大小的图片元素之后,去除图片元素中的重复图片,即对于多张相同的图片元素,只保留一张,进一步减少了图片元素的数量,从而优化了软键盘的皮肤体积。由于键盘背景图和键盘前景图都拆散成了各个图片元素,因此需修改配置文件,更新其中的键盘和图片元素之间的引用关系。
步骤S30,将图片元素拼接成整图。如图2所示,步骤S30的具体过程为:
步骤S301,采用贪心算法和背包算法计算得到整图面积最小的拼接布局。在一个实施例中,如图3所示,步骤S301的具体过程为:
步骤S3011,按照图片高度从大到小将图片元素进行排序。
步骤S3012,按上述排序依次取出图片元素,将图片元素依次填入整图的每一行。该步骤中,整图的初始宽度预先设定,从左至右、从上至下将图片元素填入整图的每一行,并采用背包算法使得每一行在宽度上尽量填满。应当说明的是,上述步骤S3011和步骤S3012仅是为了说明本发明提供的方法的具体实施例,但并不限于此,也可以按照图片高度从小到大的顺序对图片元素进行排序,此外,将图片元素填入整图的每一行时,还可从右至左进行填入。
在一个实施例中,将图片元素填入整图时,对于整图的奇数行,可使图片元素在高度上按顶部对齐,将图片元素填入整图的偶数行时,使图片元素在高度上按底部对齐。这样可以使得相邻两行之间的缝隙最大化。
在一个优选的实例中,如图7所示,从整图的最后一行末尾开始,依次取出图片元素,填入前面各行之间的缝隙中,直到不能填入为止。由于图片元素是按照高度从大到小进行填入的,因此在整图的最末尾,图片元素的尺寸大小最小,可以将这些尺寸很小的图片元素填入前面各行之间的缝隙中,通过这样的调整,使得整图的面积进一步缩小。此外,若图片元素是按照高度从小到大进行填入,则尺寸大小最小的图片元素位于整图首行,因此可以从头依次取这些尺寸很小的图片填入后面各行的缝隙中。
步骤S3013,判断图片元素是否填完,若是,则进入步骤S3014,否则,返回步骤S3012,直到所有图片元素填完。
步骤S3014,计算整图的面积,记录整图的面积和图片元素的拼接布局。
步骤S3015,判断是否需以预设步长改变整图的宽度,若是,则进入步骤S3012,否则进入步骤S3016。即以预设步长改变整图的宽度,例如整图的初始宽度为w,预设步长为s,则改变整图的宽度为w±s,重复步骤S3012~步骤S3014。其中,整图的宽度变化可以取值为宽度最大的图片元素的宽度到所有图片元素的宽度之和。
步骤S3016,取上述得到的整图中面积最小的整图的宽度和对应的拼接布局。根据上述步骤所得到的拼接布局对应的整图面积大小最小,因此能够得到最优化的皮肤体积。
步骤S302,修改配置文件,记录图片元素在整图中的位置,以及更新键盘和图片元素之间的引用关系。
上述图片元素以及整图都可采用PNG格式图片,PNG(PortableNetworkGraphicFormat,流式网络图形格式)是一种通用的图像压缩格式,其支持调色板模式,使用颜色索引表可以支持256色的彩色图像,像素颜色深度可以达到24位,和GIF一样支持透明度、流式读写、渐进显示、独立于软硬件环境等。此外,还支持alpha通道、一个文件存储多幅图像、循环冗余校验等。PNG的压缩算法源自LZ77无损压缩算法。这些特性使得PNG格式在移动通信终端(如手机平台)上得到广泛的应用。PNG对于特定的彩色图像,例如颜色深度较深但颜色数较少的图像,能够得到很高的压缩率,且是无损压缩。
在一个实施例中,软键盘的皮肤文件中的图片总数(包括键盘背景图和键盘前景图)为81,体积为356K,经过上述软键盘皮肤体积优化方法的处理后,一套皮肤的图片体积从356K可减为14K,压缩比率是1/25。假定在运行时一次载入一套皮肤的所有图片,经过上述优化后,所需要的内存将大为减少,优化前载入18个键盘的所有图片需内存约5.6M,优化后载入PNG格式的整图则需内存500K。
如图4所示,一种软键盘皮肤体积优化***,包括图片获取模块10、图片拆散模块20和图片拼接模块30,其中:图片获取模块10用于获取皮肤文件中的键盘背景图和键盘前景图;图片拆散模块20用于按预设单位大小将键盘背景图和键盘前景图拆散为图片元素;图片拼接模块30用于将图片元素拼接为整图。
在一个实施方式中,预设单位大小为单个或多个按键大小,图片拆散模块20是将键盘背景图和键盘前景图拆散成单个或多个按键大小的图片元素。在一个实施例中,拆散完成后图片拆散模块20还用于去除图片元素中的重复图片。
如图5所示,在一个实施例中,软键盘皮肤体积优化***除了包括上述图片获取模块10、图片拆散模块20和图片拼接模块30外,还包括配置文件模块40。图片拼接模块30还用于采用贪心算法和背包算法计算得到使整图面积最小的拼接布局;配置文件模块40用于修改配置文件,记录图片元素在整图中的位置,以及更新键盘和图片元素之间的引用关系。
在一个实施例中,图片拼接模块30还用于按图片高度将图片元素进行排序,按该排序依次取出图片元素,将图片元素依次填入整图的每一行,直到所有图片元素填入完。在一个优选的实施例中,图片拼接模块30可从左至右、从上至下将图片元素依次填入整图的每一行,并以预设步长改变整图的宽度,重新拼接所有图片元素,最后取上述得到的整图中面积最小的整图的宽度和对应的拼接布局。该实施例中,在填入图片元素的过程中,图片拼接模块30还可用于将图片元素填入整图的奇数行时,使图片元素在高度上按顶部对齐;将图片元素填入整图的偶数行时,使图片元素在高度上按底部对齐。
如图5所示,在一个优选的实施例中,图片拼接模块30包括图片调整模块301,用于在填入图片元素之后,从整图的最后一行末尾开始,依次取出图片元素,填入前面各行之间的缝隙中,直到不能填入为止。
应当说明的是,上述软键盘皮肤体积优化方法及***,不仅可以应用于各种输入法,特别是手机平台上的输入法的软键盘中,还可以应用于手机平台上的其它应用的皮肤体积优化,例如计算器、日历等软键盘的皮肤体积优化中。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (8)
1.一种软键盘皮肤体积优化方法,包括以下步骤:
获取皮肤文件中的键盘背景图和键盘前景图;
按预设单位大小将所述键盘背景图和键盘前景图拆散成图片元素;
将所述图片元素拼接成整图,所述将图片元素拼接成整图的步骤具体是:
(1)采用贪心算法和背包算法计算得到整图面积最小的拼接布局;步骤具体是:
A、按照图片高度从大到小将图片元素进行排序;
B、按所述排序依次取出图片元素,将图片元素依次填入整图的每一行,直到所有图片元素填入完,其中,将图片元素填入整图的奇数行时,使图片元素在高度上按顶部对齐,将图片元素填入整图的偶数行时,使图片元素在高度上按底部对齐;
C、计算整图的面积,记录所述整图的面积和图片元素的拼接布局;
D、以预设步长改变整图的宽度,重复步骤B~C;
E、取上述得到的整图中面积最小的整图的宽度和对应的拼接布局;
(2)修改配置文件,记录图片元素在整图中的位置,以及更新键盘和所述图片元素的引用关系。
2.根据权利要求1所述的软键盘皮肤体积优化方法,其特征在于,所述预设单位大小为单个或多个按键大小,将键盘背景图和键盘前景图拆散成单个或多个按键大小的图片元素。
3.根据权利要求1所述的软键盘皮肤体积优化方法,其特征在于,在按预设单位大小将键盘背景图和键盘前景图拆散成图片元素之后还包括去除图片元素中的重复图片的步骤。
4.根据权利要求1-3中任意一项所述的软键盘皮肤体积优化方法,其特征在于,在步骤C之前还包括:从所述整图的最后一行末尾开始,依次取出图片元素,填入前面各行之间的缝隙中,直到不能填入为止。
5.一种软键盘皮肤体积优化***,其特征在于,包括:
图片获取模块,用于获取皮肤文件中的键盘背景图和键盘前景图;
图片拆散模块,按预设单位大小将所述键盘背景图和键盘前景图拆散成图片元素;
图片拼接模块,将所述图片元素拼接成整图,所述图片拼接模块还用于采用贪心算法和背包算法计算得到整图面积最小的拼接布局;所述图片拼接模块还用于按图片高度从大到小将图片元素进行排序,按所述排序依次取出图片元素,将图片元素依次填入整图的每一行,直到所有图片元素填入完,其中,将图片元素填入整图的奇数行时,使图片元素在高度上按顶部对齐,将图片元素填入整图的偶数行时,使图片元素在高度上按底部对齐;以预设步长改变整图的宽度,重复拼接所有图片元素,取上述得到的整图中面积最小的整图的宽度和对应的拼接布局;
所述***还包括:配置文件模块,修改配置文件,记录图片元素在整图中的位置,更新键盘和所述图片元素的引用关系。
6.根据权利要求5所述的软键盘皮肤体积优化***,其特征在于,所述预设单位大小为单个或多个按键大小,所述图片拆散模块是将键盘背景图和键盘前景图拆散成单个或多个按键大小的图片元素。
7.根据权利要求5所述的软键盘皮肤体积优化***,其特征在于,所述图片拆散模块还用于去除图片元素中的重复图片。
8.根据权利要求5-7中任意一项所述的软键盘皮肤体积优化***,其特征在于,所述图片拼接模块包括:
图片调整模块,用于从所述整图的最后一行末尾开始,依次取出图片元素,填入前面各行之间的缝隙中,直到不能填入为止。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010247945.5A CN102375723B (zh) | 2010-08-06 | 2010-08-06 | 软键盘皮肤体积优化方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010247945.5A CN102375723B (zh) | 2010-08-06 | 2010-08-06 | 软键盘皮肤体积优化方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102375723A CN102375723A (zh) | 2012-03-14 |
CN102375723B true CN102375723B (zh) | 2016-01-20 |
Family
ID=45794372
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010247945.5A Active CN102375723B (zh) | 2010-08-06 | 2010-08-06 | 软键盘皮肤体积优化方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102375723B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103903587B (zh) * | 2012-12-27 | 2017-07-21 | 腾讯科技(深圳)有限公司 | 一种处理图片数据的方法及装置 |
CN104317479A (zh) * | 2014-10-10 | 2015-01-28 | 百度在线网络技术(北京)有限公司 | 输入界面的展现方法和装置 |
CN104504033A (zh) * | 2014-12-15 | 2015-04-08 | 深圳市电明科技有限责任公司 | 图片数据处理方法及*** |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101256409A (zh) * | 2008-04-08 | 2008-09-03 | 哈尔滨工程大学 | 基于递归模糊神经网络的水下潜器空间变结构控制方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8239882B2 (en) * | 2005-08-30 | 2012-08-07 | Microsoft Corporation | Markup based extensibility for user interfaces |
-
2010
- 2010-08-06 CN CN201010247945.5A patent/CN102375723B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101256409A (zh) * | 2008-04-08 | 2008-09-03 | 哈尔滨工程大学 | 基于递归模糊神经网络的水下潜器空间变结构控制方法 |
Non-Patent Citations (2)
Title |
---|
http://snowman.blog.51cto.com/307956/349383;snowmanwong;《PngMergeHelper-合并png帧序列图片的小工具,特别适合Android和iphone游戏产品》;20100714;第1-3页 * |
矩形件排样的研究进展;邓冬梅等;《宇航材料工艺》;20061030(第5期);第16-20页 * |
Also Published As
Publication number | Publication date |
---|---|
CN102375723A (zh) | 2012-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20140123050A1 (en) | Text input | |
CN101183296A (zh) | 通过手机触摸屏上显示的虚拟双拼键盘输入汉字 | |
CN1692328A (zh) | 文本输入方法及其装置 | |
CN103534676A (zh) | 具有先前输入文本校正的触摸屏键盘 | |
US20100134328A1 (en) | Keypads Row Similar to a Telephone Keypad | |
DE112005002657T5 (de) | Verfahren und Matrix zur Zeicheneingabe in elektronische Rechengeräte | |
CN102193711A (zh) | 一种虚拟键盘的字母按键显示方法与装置 | |
CN103329086A (zh) | 输入装置、输入方法及计算机程序 | |
CN103380412A (zh) | 输入装置、输入方法及计算机程序 | |
CN102520868A (zh) | 一种通过虚拟键盘实现pda设备快速车牌号输入的方法 | |
CN102375723B (zh) | 软键盘皮肤体积优化方法及*** | |
CN101572746A (zh) | 在上网手机触摸屏上通过虚拟键盘输入字符的方法 | |
CN102520846A (zh) | 移动通信终端输入方法和移动通信终端 | |
CN102087572A (zh) | 移动终端的中文输入窗显示方法及装置 | |
US20150082234A1 (en) | Electronic device and text-input interface displaying method thereof | |
CN102479215B (zh) | 文件自动导出的方法及电子阅读装置 | |
CN101763207A (zh) | 新形手写虚拟键盘的构建及调用方法 | |
US20070300175A1 (en) | Electronic device and key setting method | |
CN102508600A (zh) | 一种实现手机俄文虚拟键盘的方法和装置 | |
US8850311B2 (en) | Word input method | |
CN201717935U (zh) | 一种具有触控led阵列的手机 | |
CN103329089A (zh) | 输入装置、输入方法及计算机程序 | |
KR20170133047A (ko) | 가상 키보드 구조, 가상 키패드 기반 문자 입력 방법, 이를 실현하기 위한 프로그램이 기록되어 있는 컴퓨터 판독 가능한 기록 매체 | |
CN100568164C (zh) | 一种用于嵌入式设备的数字键盘汉字输入方法 | |
KR101166676B1 (ko) | 영문자 키패드 제공방법 및 이를 적용한 모바일 기기 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |