制作SmartPhone主题可以使用主题软件,但是用主题软件做出来的主题一般都是些简单主题,碰到要加第三方插件时,一般都不支持或支持不好,这时可以手工编写主题文件。
主题文件就是由一个个代码段组成的,修改主题文件可以找一个布局等方面自己相对满意的主题,替换其中的背景、插件、配色等。
制作主题提前准备好图片、布局、要使用的插件等,然后把他们一个个拼合起来,再修改修改,主题就做好了。
一、了解主题XML文件
XML文件一般由默认代码区、配色代码区、插件代码区三部分组成。一般存放在手机的\Storage\Application Data\Home\目录下或者\windows\目录下。
编辑XML文件可以用文本编辑器(包括UltraEdit,UEStudio05,Vim,记事本……)打开进行修改,注意的是保存时需要采用另存为并选择UTF-8编码保存。
下面以多普达手机自带的“Windows 默认方案”的xml文件为例详细说明。
二、主题信息引用:
<?xml version="1.0"?>
<home>
<author>Microsoft Corporation</author>
<contacturl>http://www.microsoft.com/<;/contacturl>
<title lang="0x0409">Windows Default</title>
<title lang="0x0412">Windows 기본값</title>
<title lang="0x0411">Windows 標準</title>
<title lang="0x0404">Windows 預設配置</title>
<title lang="0x0804">Windows 默认方案</title>
<version>1.0</version>
1、表示这是一个 XML 文件;
2、主题都是以 home 标签开始的,在主题文件的最后可以看到他的结尾标签 home;
3、主题的作者;
4、作者联系地址;
5-9、主题名称,这就是你在 设置-主屏幕 中看到的名称。
下面是 lang 语言文件属性,这个属性表示主题在各种语言系统环境下显示的名称。
lang=”0×0409″ - 英文
lang=”0×0412″ - 韩文
lang=”0×0411″ - 日文
lang=”0×0404″ - 繁体中文
lang=”0×0804″ - 简体中文
10、主题的版本
三、主题属性引用:
<default target-width="240" target-height="320" font-face="nina" font-size="19" font-weight="normal" padding-left="5" padding-right="5" bgcolor="transparent" fgcolor="COLOR_HOMETEXT" padding-top="3" b-border-color="COLOR_HOMERULE" b-border-width="1">
<format state="selected" fgcolor="COLOR_HOMEHIGHLIGHTTEXT"/>
</default>
主题属性中有需要指定的属性但没指定时,就会采用这里指定的默认设置。
target-width 主画面宽
target-height主画面高
普通屏幕的不用设置,如果是设计QVGA的主题,这就需要写上target-width=”240″ target-height=”320″
font-face == 字体名称
font-size == 字体大小
font-weight=”normal” == 字型样式-正常
padding-left == 套件的内容和左边界的距离
padding-right == 套件的内容和右边界的距离
padding-top == 套件的内容和上边界的距离
bgcolor=”transparent” == 背景颜色=透明 这样才能看得到背景图片
fgcolor=”COLOR_HOMETEXT” == 文字颜色
COLOR_HOMETEXT 表示使用色彩配置中的 COLOR_HOMETEXT,色彩配置后面会提到。
b-border-color - 线框颜色
b-border-width - 线框粗细
线框就是每个套件下面都会出现的那条线,用来和下一个套件作区分。
各种状态下的格式,必须要和 state 属性一起使用。
state - 状态,比较常见的是 selected,表示选择到这个套件的时候。
四、背景图片引用:
<background bgimage="\windows\WindowsMobile.jpg" valign="bottom" bgcolor="COLOR_TRAYGRADLEFT" />
主题的背景
bgimage - 背景图片
bgcolor - 背景颜色
如果背景图直接放在\Storage\Application Data\Home\下,这里就可以光写背景图文件名就可以了,如果是放在Home下的单个文件夹里的就需要写全部路径了:
valign=”bottom” == 对齐,bottom 表示对齐底部
在背景图片超过解析度大小的状况下,bottom 对齐就会舍弃掉背景图片上部超出的部份;相反的,top 对齐就会舍弃掉背景图片下部超出的部份。
五、色彩配置引用:
<scheme>
<color name="COLOR_WINDOW" value="#FFFFFF" />
<color name="COLOR_WINDOWTEXT" value="#000000" />
<color name="COLOR_STATIC" value="#FFFFFF" />
<color name="COLOR_STATICTEXT" value="#000000" />
<color name="COLOR_GRAYTEXT" value="#808080" />
<color name="COLOR_WINDOWFRAME" value="#000000" />
<color name="COLOR_HIGHLIGHT" value="#004196" />
<color name="COLOR_HIGHLIGHTTEXT" value="#FFFFFF" />
<color name="COLOR_MENU" value="#C4E7FF" />
<color name="COLOR_MENUTEXT" value="#000000" />
<color name="COLOR_GRADLEFT" value="#ffffff" />
<color name="COLOR_GRADRIGHT" value="#C5E3F5" />
<color name="COLOR_INTGRADLEFT" value="#ffffff" />
<color name="COLOR_INTGRADRIGHT" value="#A1D6F5" />
<color name="COLOR_HIGHGRADLEFT" value="#004196" />
<color name="COLOR_HIGHGRADRIGHT" value="#004196" />
<color name="COLOR_TRAYGRADLEFT" value="#2E97E3" />
<color name="COLOR_TRAYGRADRIGHT" value="#004196" />
<color name="COLOR_TRAYTEXT" value="#FFFFFF" />
<color name="COLOR_BTNFACE" value="#8ED4F7" />
<color name="COLOR_BTNTEXT" value="#000000" />
<color name="COLOR_SCROLLBAR" value="#2E97E3" />
<color name="COLOR_ALERTWINDOW" value="#C4E7FF" />
<color name="COLOR_ALERTTITLE" value="#004196" />
<color name="COLOR_ALERTRULE" value="#000000" />
<color name="COLOR_HOMETEXT" value="#FFFFFF" />
<color name="COLOR_HOMEHIGHLIGHTTEXT" value="#FFFFFF" />
<color name="COLOR_HOMERULE" value="#003B8F" />
<color name="COLOR_HOMEHIGHLIGHT" value="#003684" />
</scheme>
色彩配置使用 …. 标签中间的所有色彩的设定
就是各种系统色彩的设定
当有任何属性指定色彩配置中的颜色时 (name),就会被替换成 value 中的值
例如:bgcolor=”COLOR_TRAYGRADLEFT” 实际上就是 bgcolor=”#2E97E3″,
这样做的好处是,当日后想变更整个主题的色系时,只要在这里修改就好,不用再到各个属性中更改颜色值了。
色彩配置的项目很多,见文章最后的汇总。
注:这些色彩配置也可以独立出来写成另一个 XML文件(*.scheme.xml),同样放在\Storage\Application Data\Home\下,放好后就可以在设置-主屏幕-色彩方案中看到了。
六、标题栏 引用:
<plugin clsid="{837FC251-FE69-43ad-84E0-EBCEDEBA0884}" name="iconbar" height="27">
<iconbar fgcolor="COLOR_TRAYTEXT"/>
<background gradient="title" bgcolor="COLOR_TRAYGRADLEFT" b-border-color="COLOR_WINDOWFRAME" b-border-width="1"/>
</plugin>
clsid 和 name 的关系你可以把它想成 IP 和网址的关系。
clsid是用来指定是什么套件的,只需要看name就可以了
height - 这个区块在主画面所占的高度。
iconbar - 标题栏
background - 套件的背景
gradient=”title” - 使用渐层背景,如果没有这个属性标题就会变成单色
bgcolor - 背景颜色
b-border-color - 线框颜色
使用渐层背景时,背景颜色及线框颜色都不起作用(也就是说若要使用渐层,就去掉这两个属性),所以如果你想自定义背景及线框的话,首先要取消消渐层。
如果不指定线框的粗细就都会取标签中设定的值。
如果不想让标题栏的背景挡住桌面的话,可以使用透明背景:
其实 bgcolor=”transparent” 这段可以不要,因为 标签已经设定过了,
若是你在其中已经指定b-border-width=”0″,甚至还可以把这段拿掉。
七、常用快捷方式(你最近使用的程序)
引用:
<plugin clsid="{79EFB752-CB70-446d-B317-499723482B3D}" name="startmru" height="52">
<mru y="3"/>
</plugin>
最近使用的程式的快捷方式
以套件区块的左上角座标为 (0,0),x 座标向右,y 座标向下。
这里只有一个属性 y - 是和套件区块上边缘的距离。
另外还有几个属性是比较常用的
icon-size - 图标大小,设为 16 或 32 ,(注意:套件的 height 属性记得一起更改)
button-image - 背景图片
button-transparent-color - 和上面的属性一起使用,指定背景图片中的一色为透明色。
max-button - 指定显示多少个图标
八、系统信息(这个套件用来显示手机卡所属运营商名称、时间及日期)
引用:
<plugin clsid="{E09043DF-510E-4841-B652-388316977A7A}" name="carrier" height="55">
<label>
<text><carrier/></text>
</label>
<clock>
<time y="23"/>
<date y="23" halign="right"/>
</clock>
</plugin>
将此标签的内容显示在主画面上。
想要显示的文字必须要用这个标签包起来。
运营商名称。
时间及日期。
时间。
日期。
halign - 对齐方式,right 对齐右边。
mode - 格式
用於 时属性值有两个:
long - 相当于[设定 - 区域设定]中的长日期样式。
short - 相当于[设定 - 区域设定]中的短日期样式。
这个属性也能用于 中,属性值:
12 - 使用 12 小时制;
24 - 使用 24 小时制;
这里套件中的各个实体,如果没有指定座标,会全部以 (0,0) 为座标出现,也就是各个实体会叠在一起,不像编辑网页时是一个接著一个彼此不重叠,所以除了使用座标定位外,还可以使用对齐(水平 halign 或垂直 valign)的方式来将各个实体作定位,
这个范例中就分别将运营商名称、时间、日期分别定位到左 (left)、中 (center)、右 (right),这样就不用费心去计算座标该设为多少。
九、通话状态(通话中回到桌面时会显示的套件)
引用:
<plugin clsid="{37391041-C324-4725-BEE1-3232ED3539CA}" name="callprog" height="56">
<background>
<format state="selected" bgcolor="COLOR_HOMEHIGHLIGHT"/>
</background>
<format state="nocall" visible="false"/>
<label>
<text lang="0x0409">Call in progress:</text>
<text lang="0x0412">진행 중인 전화:</text>
<text lang="0x0411">通話中:</text>
<text lang="0x0404">通話中:</text>
<text lang="0x0804">通话中...</text>
</label>
<label y="23">
<text><progress/></text>
</label>
</plugin>
这个套件中使用了两个 ,分别用于背景及套件上,
第一个用于背景,意思是说 “当这个套件被选择的时候,背景颜色为 COLOR_HOMEHIGHLIGHT”,
第二个用于套件,意思是说 “非通话时 (nocall),不显示这个套件 (visible=”false”)”,
通话状态,也就是上图的 “拨号中: 语音信箱” 及 “语音信箱” 这个部份。
十、未接来电(有未接来电才会显示在主画面上)
引用:
<plugin clsid="{0BA8ABB8-1F1D-417f-88C6-DA8530E2E7A6}" name="missedcalls" height="27">
<background>
<format state="selected" bgcolor="COLOR_HOMEHIGHLIGHT"/>
</background>
<format state="nocall" visible="false"/>
<label h="22">
<text lang="0x0409">Missed calls: <calls/></text>
<text lang="0x0412">부재 중 전화: <calls/></text>
<text lang="0x0411">着信あり: <calls/></text>
<text lang="0x0404">未接來電: <calls/></text>
<text lang="0x0804">未接电话: <calls/></text>
</label>
</plugin>
h - height 的缩写,即高度(同样的,w 为width 的缩写,宽度)。
显示有多少个未接来电(只有数字)。
十一、全天活动引用:
<plugin clsid="{2FFD93B3-0FF0-4228-A6D6-D2DF177D7D92}" name="alldayevent" height="27">
<background>
<format state="selected" bgcolor="COLOR_HOMEHIGHLIGHT"/>
</background>
<format state="noevent" visible="false"/>
<label h="22">
<text><subject/></text>
</label>
</plugin>
今明两天有全天活动时才会显示,全天活动的主旨。
十二、最近约会(显示最近约会)
引用:
<plugin clsid="{865A354A-4A96-4687-B001-C155DC0DBE76}" name="calendar" height="55">
<background>
<format state="selected" bgcolor="COLOR_HOMEHIGHLIGHT"/>
</background>
<label h="22">
<text><subject/></text>
</label>
<label y="23">
<text><time/></text>
</label>
</plugin>
约会主旨;
约会时间;
约会地点。
十三、情景模式引用:
<plugin clsid="{95976968-45D5-40c9-9779-2B859B1C2FEC}" name="profile" height="27">
<background>
<format state="selected" bgcolor="COLOR_HOMEHIGHLIGHT"/>
</background>
<label>
<text lang="0x0409" singleline="true">rofile: <profile/></text>
<text lang="0x0412" singleline="true">프로필: <profile/></text>
<text lang="0x0411" singleline="true">プロファイル: <profile/></text>
<text lang="0x0404" singleline="true">操作模式: <profile/></text>
<text lang="0x0804" singleline="true">情景模式: <profile/></text>
</label>
</plugin>
显示目前的操作模式。
singleline=”true” - 单行显示 (也就是略过内容中的换行)。
十四、小区广播 引用:
<plugin clsid="{4e822425-a00f-497c-80ff-1c554665a369}" name="cooltext" height="27">
<scrolltext textsource="cellbroadcast"/>
<background>
<format state="selected" bgcolor="COLOR_HOMEHIGHLIGHT"/>
</background>
</plugin>
国内没有这样的服务,用不到。
十五、语音信箱(及信息)
引用:
<plugin clsid="{DCE58428-275E-491f-B835-F2AC38D0CC17}" name="voicemail" height="27">
<background>
<format state="selected" bgcolor="COLOR_HOMEHIGHLIGHT"/>
</background>
<label>
<text lang="0x0409">Voicemail: <unreadVMail/></text>
<text lang="0x0412">음성 메일: <unreadVMail/></text>
<text lang="0x0411">ボイスメール: <unreadVMail/></text>
<text lang="0x0404">語音信箱: <unreadVMail/></text>
<text lang="0x0804">语音信箱: <unreadVMail/></text>
</label>
</plugin>
语音信箱中有多少未听取留言
这个套件提供了三个实体:
未读留言 (只有数字)。
未读短信 (只有数字)。
未读邮件,包含 Outlook 邮件、Hotmail 邮件及 MMS (只有数字)。
十六、短信及邮件引用:
<plugin clsid="{8486CC1E-025B-4888-9C76-048DF7C1787D}" name="msgcount2" height="27" autoheight="false">
<background>
<format state="selected" bgcolor="COLOR_HOMEHIGHLIGHT"/>
</background>
<mail account="sms"/>
</plugin>
<plugin clsid="{8486CC1E-025B-4888-9C76-048DF7C1787D}" name="msgcount2" height="27" autoheight="false">
<background>
<format state="selected" bgcolor="COLOR_HOMEHIGHLIGHT"/>
</background>
<mail account="mms"/>
</plugin>
<plugin clsid="{8486CC1E-025B-4888-9C76-048DF7C1787D}" name="msgcount2" height="27" autoheight="false">
<background>
<format state="selected" bgcolor="COLOR_HOMEHIGHLIGHT"/>
</background>
<mail account="activesync"/>
</plugin>
<plugin clsid="{8486CC1E-025B-4888-9C76-048DF7C1787D}" name="msgcount2" height="27" autoheight="true">
<text padding-bottom="5"/>
<background>
<format state="selected" bgcolor="COLOR_HOMEHIGHLIGHT"/>
</background>
<mail account="others"/>
</plugin>
未读短信。
未读邮件 (Outlook 邮件)。
其他未读信息 (Hotmail 及 MMS)。
和上一个套件不同之处,这个套件直接产生”短消息 (0)”
autoheight - 自动调整高度
因为其他未读讯息的部份包含了 Hotmail 及 MMS,有时是单行,有时是双行,所以加上这个属性让它自动调整高度。
XML文件中配色各值的意思
官方提供的属性表如下:
COLOR_WINDOW
所有应用程式视窗和控制项的背景色彩,包括卷轴的透明部位。
COLOR_WINDOWTEXT
清单检视、控制项和标签的文字色彩。未设定功能表文字色彩、软键文字色彩或按钮文字色彩。
COLOR_STATIC
静态控制项的背景色彩,例如标签。同时设定信息方块的背景色彩。
COLOR_STATICTEXT
静态控制项的文字色彩,例如标签。
COLOR_HIGHLIGHT
清单检视、控制项、功能表和软键按钮的选取区域色彩。
COLOR_HIGHLIGHTTEXT
当项目有选取区域时的文字色彩,例如清单检视元素或控制项和反白的软键。
COLOR_MENU
功能表的背景色彩。
COLOR_MENUTEXT
功能表项目的文字色彩。
COLOR_GRAYTEXT
停用的文字色彩,例如停用的功能表项目和软键按钮。
COLOR_GRADLEFT
背景渐层的起始色彩值。
COLOR_GRADRIGHT
背景渐层的结束色彩值。
COLOR_INTGRADLEFT
次要背景渐层的起始色彩值。
COLOR_INTGRADRIGHT
次要背景渐层的结束色彩值。
COLOR_HIGHGRADLEFT
不支援渐层的醒目提示。 COLOR_HIGHGRADLEFT 和 COLOR_HIGHGRADRIGHT 必须设定成相同的数值。
COLOR_HIGHGRADRIGHT
不支援渐层的醒目提示。 COLOR_HIGHGRADLEFT 和 COLOR_HIGHGRADRIGHT 必须设定成相同的数值。
COLOR_TRAYGRADLEFT
标题列渐层的起始色彩值。
COLOR_TRAYGRADRIGHT
标题列渐层的结束色彩值。
COLOR_TRAYTEXT
标题列文字的色彩。
COLOR_WINDOWFRAME
主视窗和软键区域之间以及卷轴缩图周围边框的分隔线色彩。
COLOR_BTNFACE
软键区域中未选取的背景色彩。
COLOR_BTNTEXT
软键区域、导览图像和卷轴缩图中未选取的背景色彩。
COLOR_SCROLLBAR
卷轴线条的色彩。
COLOR_ALERTTITLE
警示内标题文字的色彩。
COLOR_ALERTWINDOW
警示的背景色彩。
COLOR_ALERTRULE
警示的分隔线的色彩。
COLOR_HOMERULE
[首页] 屏幕上分隔线的色彩。
COLOR_HOMETEXT
[首页] 屏幕上未选取文字的色彩。
COLOR_HOMEHIGHLIGHTTEXT
[首页] 屏幕上已选取文字的色彩。
COLOR_HOMEHIGHLIGHT
[首页] 屏幕上已选取嵌入程式的色彩。