admin管理员组

文章数量:1530889

2024年7月17日发(作者:)

搜狗输入法Android平台皮肤说明

一、综述

搜狗输入法Android平台的皮肤文件格式是sga。它是由zip格式的压缩文件修改后

缀名为sga得到的。

因此,将搜狗输入法Android平台的皮肤文件重命名,将其sga后缀名改成zip,

就可以正常解压。在解压之后,就可以看到皮肤文件使用的配置文件(*.ini)和图片资源了。

搜狗输入法皮肤支持图片更换和键盘布局的修改。通过更换图片,可以最快捷的,最简单的

制作一套新皮肤,这种方法制作出来的皮肤布局是与默认皮肤完全一致的。另外一种,更换

键盘布局的制作方法就属于深度定制了,可以实现各种输入法键盘布局以及功能搭配。

二、皮肤文件夹结构

下面,先来介绍一下皮肤文件夹和文件的定义规范:

解压以后可以得到一个普通的文件夹,我们称之为皮肤总文件夹。这个总文件夹

的命名时任意的,我们推荐定义为皮肤名称以便于识别,进入总文件夹后,可以看见其中有

一些子文件夹和零散的文件。

其中,必须要有的是:文件和default文件夹。default文件夹中存放的

是这个皮肤中不同分辨率下都支持的共用文件。如果没有共用文件,那么default文件夹就

是个空文件夹,但是,它也必须存在。

在总文件夹里面,还可以看到一个名字为320的文件夹。这个文件夹里的数据是

支持屏幕宽度为320像素的手机型号的。Android平台的皮肤默认分类方法是基于屏幕宽度

的分类。同理可得,以480、240命名的文件夹中,其数据是分别支持屏幕宽度为480像素、

240像素的手机的。

如果想只支持特定分辨率的手机,就需要定义以该分辨率命名的文件夹。例如:

“320x480”文件夹中的数据就只支持分辨率为320 x 480的手机。同时,为了减少皮肤的文

件夹的大小。各个文件夹之间支持覆盖。也就是说,可以将320x480文件夹建在320文件夹

中。

举一个例子:

现在有一个皮肤结构如下:

|

--default

|

--320

|

--320x480

对于这么一个目录结构,皮肤安装程序会作如下解释:320x480中的文件是优先

级是最高的,320优先级第二,default的优先级是第三。意思就是说,对于一个320x480的

分辨率的手机,当皮肤安装以后,首先会在320x480这个文件夹中去找所需要的文件,然后

会在320这个文件夹中去找文件,最后如果都没有找到,就会在default的文件夹中去找。

同时,由于有320这个文件夹存在,所有这个皮肤会支持所有的以320为屏宽的手机。

这些表示适配分辨率的文件夹,包括:default,320,320x480等等,其内部结构

都是一致的。以default为例,在default文件夹下,有:layout、res、port、land四个文件

夹。res用于存放所有的资源,包括图片以及字体等资源。Layout、port和land用于存放键

盘ini配置文件。其中layout文件是基本的文件夹,在layout文件夹中的所有ini既可以用

于横屏也可以用于竖屏,port文件夹中的所有ini文件都是用于竖屏的,land中的所有ini

文件用于横屏的。

如下图所示,default文件夹下面有如下目录。

|

--default---------layout

|

|

--320

--res

|

|

--320x480

--port

|

--land

假设,有2个ini文件分别叫做和,它们分别存储于land

和layout文件夹下面。那么,横屏状态下的键盘布局就使用land下的文件。竖

屏状态下的键盘布局就需要首先去port下面找,没有找到,就应该去layout下面找,所以

在竖屏下使用的就是文件。

再举一个复杂一点的例子,如上图文件夹结构,现有一个文件在

320x480的port文件夹下面,同时在default的layout下面有一个。那么,在

320x480分辨率的屏幕下,竖屏键盘布局,会选择320x480文件夹里的port文件夹里的

文件。对于320x480下横屏键盘布局的寻找顺序是:320x480文件夹的land文

件夹 --> 320文件夹下的land文件夹 --> default文件夹下的land 文件夹--> 320x480文件夹

下的layout 文件夹--> 320文件夹下的layout文件夹 --> default文件夹下的layout文件夹。

最终,在default文件夹下的layout文件夹里找到使用。

以上就是皮肤的目录结构。是自定义键盘布局的基础。

三、文件结构

接下来,我们介绍一下ini文件的结构。

皮肤文件要求,必须皮肤总文件夹的中有一个文件;必须在default文

件夹中的layout文件夹下有:、digit_、、en_、py_、en_、

py_、 digit_、、

这10个文件。即使这些文件是空的。

这些文件的作用分别是:



:用于所有候选框的配置;



digit_ :用于数字键盘下的数字输入状态配置;



digit_ :用于全键盘的数字输入状态配置;



en_ :用于数字键盘下的英文输入状态配置;



en_ :用于全键盘下的英文输入状态配置;



py_ :用于数字键盘下的中文输入状态配置;



py_ :用于全键盘下的中文输入状态配置;



:用于编辑键盘的配置。、



:所有键盘按键的模板按键的配置



:所有的背景图片的配置文件。

四、图片替换式皮肤制作方法

图片替换式的皮肤制作方法非常简单,就是将所以代表分辨率的文件夹(包括

default文件夹)下的res文件夹下的图片进行替换即可,替换时注意不要更改图片命名。

皮肤有3类图片组成:大背景、背景图片和前景图片。大背景指的是整个键盘的背景,可以

用颜色RGB值替代。背景图片指的是各个按键的背景图。前景图片指的是按键上的图标。

如下图所示:

图片格式为透明PNG,为了减少空间和资源的占用,推荐使用8位PNG图片,这样

可以让图片文件大小尽量小一些。

在各个分辨率下的layout文件夹下,都有一个文件。这个文件描述的是各

个分辨率对应的图片的配置文件(大部分为针对背景图片的描述)。其中,描述图片格式的

语句样式为:

key_,6,18,6,14

这个语句的含义是:(注意,其中的逗号为英文半角逗号)

图片名称, 横向拉伸区域起点X坐标x0, 横向拉伸区域终点X坐标x1,纵向拉伸区域

起点Y坐标y0, 纵向拉伸区域终点Y坐标y1,

Android平台的皮肤为了节省空间和资源,其背景图片通常采取九段拉伸的方法。上述语句

描述的就是九段拉伸的具体方法。在横坐标为x0和x1之间的区域,可以进行横向拉伸;在

纵坐标y0和y1之间的区域,可以进行纵向拉伸。如下图:

为了防止上图中圆角矩形框的圆角变形,我们需要定义图片的可拉伸范围。以图

片左上角为坐标原点,横坐标为x0和x1之间的区域,可以进行横向拉伸(如上图中蓝色箭

头所在区域);在纵坐标y0和y1之间的区域,可以进行纵向拉伸(如上图中红色箭头所在

区域)。

背景图片制作完成后,通常需要在 中标定这些区域。

然而,前景图片是不支持拉伸的,这是为了防止图片变形。所以,为了保证显示

效果,推荐针对不同分辨率分别制作前景图片。

五、布局修改式皮肤制作方法

(高级技巧,未完待续„„)

本文标签: 文件夹皮肤文件图片键盘