25 12
发新话题
打印

[主题制作教程] 主题制作XML代码剖析

本主题由 wddw 于 2008-1-20 08:42 加入精华

主题制作XML代码剖析

制作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
[首页] 屏幕上已选取嵌入程式的色彩。
本帖最近评分记录
  • wddw 威望 +3 精品文章,支持! 2008-1-20 08:41
  • wddw W币 +3 精品文章,支持! 2008-1-20 08:41
QP智软全国总代理店
淘宝店:http://shop35323450.taobao.com
拍拍店:http://shop.paipai.com/435619142

TOP

终于编辑完,累死了,看后记得顶一顶哦
QP智软全国总代理店
淘宝店:http://shop35323450.taobao.com
拍拍店:http://shop.paipai.com/435619142

TOP

ding 

TOP

我再顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶

TOP

一定要顶的
欢迎大家在这里交流玩机心得、好的软件、好玩的游戏....

TOP

强支持,顶上去~~~
鱼说:我流泪了,你看不到,因为我在水中;
水说:我能感受到你的眼泪,因为你在我心中.

TOP

支持个!学习学习

TOP

谢谢各位,希望对一些想学习主题方面技巧的朋友有所帮助
QP智软全国总代理店
淘宝店:http://shop35323450.taobao.com
拍拍店:http://shop.paipai.com/435619142

TOP

dddddddddd

dddddddddddddddddddddd

TOP

支持下劳动成果!
大家好

TOP

这个一定好好学习学习

TOP

学习了,看来做个主题也是要花一番功夫的

TOP

很强很厉害

TOP

好文章。lz辛苦了。

TOP

楼主辛苦了!

TOP

感谢楼主!!

TOP

顶! 

经典!!!!

TOP

这么好的东西,俺们想学习了!

TOP

太精彩了!学到了好多东西!
但是,用WM6.1的滑动主题时,那个slidehome.xml文件没有那么多 模块套件。但是却显示了那么多的功能!
那它是在调用什么地方的配置呢?!

TOP

辛苦了~

TOP

 25 12
发新话题
本功能由奇虎问答实现

相关主题

标题 作者 最后发表
点击阅读更多关于的相关帖子  更多相关主题