Smartphone主题XML教程

该教程由IOICN阿才同学原创

[XML基础参数经验篇”]
一、主题XML文件规则
XML文件中的各语句都是有头有尾、有始有终的,如前面有“<label>”后面就必须有个结尾“</label>”
◎用记事本打开主题XML文件我们会发现它的格式如下:
<?xml version=”1.0″?>
<home>
<author>作者</author>
<contacturl>联系方式,如:www.aryaya.com</contacturl>
<title>主题名称</title>
<version>版本</version>
<default>
<!– 这里是主题一些默认参数的位置,如字体、字体大小、颜色等 –>
<!– 如果后面插件中的这些参数为指定,那系统就会使用这里设定的 –>
<!– 这段可以放到配色方案之后 –>
</default>
<!– 这个是主题背景图片 –>
<background bgimage=”\IPSM\Application Data\Home\Sidebar\Sidebar_home.jpg” valign=”top”/>
<scheme>
<!– 这里是配色方案的位置 –>
</scheme>
<!– 这里是各插件代码的位置 –>
</home> 大家可以看到上面的各部分都开始、结尾都一一对应,如果大家学过一些网页、编程方面的知识就会很明白这一点。如果有头无尾或有尾无头都会破坏xml文件。
教大家一个检查XML文件拼写是否正确的小方法:
先双击主题xml文件,如abc.home.xml,这时该文件就会被IE打开,如果在IE中一切显示正常,没有错误提示,那就是说你做的主题的xml文件内容、格式基本没问题。

◎当然也有另一种写法,如:
<background b-border-width=”0″>
</background>
这段语句中没什么东西,可以简写为:
<background b-border-width=”0″/>

◎关于一些插件的显示方式,如(短信插件):
<plugin clsid=”{2F930BF0-6FE9-4a53-9E17-88E9247BAB48}” name=”Messages” height=”140″>
<background b-border-width=”0″>
<format state=”selected” bgcolor=”transparent” bgimage=”\IPSM\Application Data\Home\Sidebar\Sidebar_dx.jpg” valign=”top” />
</background>
<label font-size=”14″ x=”48″ y=”52″>
<format state=”selected” bgcolor=”transparent” fgcolor=”#000000″/>
<text>短信(<unreadSMS/>)</text>
</label>
<label font-size=”14″ x=”62″ y=”52″>
<format state=”selected” bgcolor=”transparent” fgcolor=”#FFFFFF”/>
<text>邮件(<unreadEmail/>)</text>
</label>
<label font-size=”14″ x=”77″ y=”52″>
<format state=”selected” bgcolor=”transparent” fgcolor=”#FFFFFF”/>
<text>彩信(<unreadMMS/>)</text>
</label>
</plugin>
其显示的效果为:
短信(0)
邮件(0)
彩信(0)
可以把代码改成:
<plugin clsid=”{2F930BF0-6FE9-4a53-9E17-88E9247BAB48}” name=”Messages” height=”140″>
<background b-border-width=”0″>
<format state=”selected” bgcolor=”transparent” bgimage=”\IPSM\Application Data\Home\Sidebar\Sidebar_dx.jpg” valign=”top” />
</background>
<label font-size=”14″ x=”48″ y=”52″>
<format state=”selected” bgcolor=”transparent” fgcolor=”#000000″/>
<text>短信(<unreadSMS/>)/邮件(<unreadEmail/>)/彩信(<unreadMMS/>)</text>
</label>
</plugin>
这样显示效果就为:
短信(0)/邮件(0)/彩信(0)

◎其他
大家可以在一些主题xml文件中看到以下类似代码:
<title lang=”0x0409″>Windows Default</title>
<title lang=”0x0412″>Windows 기본값</title>
<title lang=”0x0411″>Windows 標準</title>
<title lang=”0x0404″>Windows 預設配置</title>
<title lang=”0x0804″>Longhron Sidebar主题</title>
…………………………………………………………………………
<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>
每一段代码都有个lang=””,这个是指在某个语言环境下显示显示某字符。引号中的就是语言代码,关于这个代码,我们只要知道0409是英语,0804 是简体中文,0404繁体中文就行了。如上面的当你的机器语言是英语时它显示为“Windows Default”和“Missed calls:”,语言是简体中文时显示为“Longhron Sidebar主题”和“未接电话:”。
注意:在英语或其他语言,如“<title lang=”0x0409″>Windows Default</title>“这栏,不要把其间的”Windows Default“写为中文,这样有可能造成主题不能使用的问题。
上面我用到的“<!– –>”为注释格式,在主题XML文件中的注释,基本上可以放到任何位置(只要你不破坏代码的完整性)都可以。
注意主题XML文件名保存格式应该为XXX.home.xml。XXX为xml文件名称,.xml为扩展名


二、xml常用参数

这里先讲各插件的通用参数,各插件的特殊参数,在第三部分“识别插件”中讲述。
大家先看看以下代码(日程约会插件)
<plugin clsid=”{865A354A-4A96-4687-B001-C155DC0DBE76}” name=”calendar” width=”50%” height=”140″>
<background b-border-width=”0″>
<format state=”selected” bgcolor=”transparent” bgimage=”\IPSM\Application Data\Home\Sidebar\Sidebar_rc.jpg” valign=”top” />
</background>
<label x=”66″ y=”76″ w=”110″ fgcolor=”#000000″>
<format state=”selected” bgcolor=”transparent”/>
<text><subject/></text>
</label>

<label x=”65″ y=”75″ w=”110″ fgcolor=”#FFFFFF”>
<format state=”selected” bgcolor=”transparent”/>
<text><subject/></text>
</label>

<label font-size=”12″ font-weight=”bold” x=”86″ y=”63″ w=”89″ fgcolor=”#000000″ >
<text><time/>/<location/></text>
</label>
<label font-size=”12″ font-weight=”bold” x=”85″ y=”62″ w=”89″ fgcolor=”#FFFFFF” >
<text><time/>/<location/></text>
</label>
</plugin>
上面用到这样几个通用参数:
◎height=”140″:
height 插件的高度
◎b-border-width=”0″
这个是插件分割条,在系统自带的主题中我们可以看到每个插件之间都有一条横线,就是这个了。0为没有横线,数字越大则分割条越粗。
◎bgimage=”\IPSM\Application Data\Home\Sidebar\Sidebar_rc.jpg”
这个是插件背景图片路径,一般用在<format/>语句中
◎valign=”top”
这个是插件背景图片的对齐方式,top是对齐顶部,bottom是对齐底部(SP主题桌面显示的图片大小为176*200,如果你的图片是 176*220,那么选择top时,图片底部的高度20部分将看不到;反之,选bottom时,图片图片顶部的高度20部分将看不到)。一般用在< format/>语句中,和“bgimage”一起用,也可以不用这个参数。
◎x=”66″
显示内容(包括文字、图标、图片等)的X轴(0至176),也可以用负数,如x=”-2″。
也可以写为halign=”right”,这样用的话,可以用三种参数:left(左对齐)、right(右对齐)、center(居中)
一般用在<label/>语句中。
◎y=”76″
显示内容(包括文字、图标、图片等)的Y轴(0至220),也可以用负数,如x=”-2″。
注意:在有些情况下,Y轴的计算不按屏幕(220)来计算,而是按所在插件的高度(height)来计算
一般用在<label></label>语句中。
◎w=”110″
显示内容(一般是文字)的宽度,一般用于日程约会等插件
一般用在<label/>语句中。
◎fgcolor=”#000000″
文字的颜色,如果没有该参数将会读取XML文件头部的<default></default>中设定的颜色。
一般用在<label/>语句中。
◎font-size=”12″
字体大小,数字越大,显示的字体越大。
如果没有该参数将会读取XML文件头部的<default></default>中设定的字体大小。
一般用在<label/>语句中。
◎font-weight=”bold”
文字粗细,bold为粗体,normal为常规
一般用在<label/>语句中。

三、识别插件
我们要自己做主题首先应该知道主题中所用的插件的代码是那部分,最准确的区分方法当然是看代码中的clsid,如:{79EFB752-CB70- 446d-B317-499723482B3D},这个是最近使用的程序插件,当时该代码又长又复杂,恐怕任谁都记不住,所以我们应该用其他的方法来区 别。
一种方法是看插件的name,如:
<plugin clsid=”{865A354A-4A96-4687-B001-C155DC0DBE76}” name=”calendar” width=”50%” height=”140″>

 

<background b-border-width=”0″>
<format state=”selected” bgcolor=”transparent” bgimage=”\Storage\Application Data\Home\QQTang\QQTang_rc.jpg” valign=”top” />
</background>
<label x=”3″ y=”39″ w=”112″ fgcolor=”#000000″>
<format state=”selected” bgcolor=”transparent”/>
<text><subject/></text>
</label>

<label x=”2″ y=”38″ w=”112″ fgcolor=”#A6D4FC”>
<format state=”selected” bgcolor=”transparent”/>
<text><subject/></text>
</label>

<label font-size=”12″ font-weight=”bold” x=”3″ y=”60″ w=”74″ fgcolor=”#000000″ >
<text><time/>/<location/></text>
</label>
<label font-size=”12″ font-weight=”bold” x=”2″ y=”59″ w=”74″ fgcolor=”#A6D4FC” >
<text><time/>/<location/></text>
</label>
</plugin>
从它的name(红色部分)“calendar”可以看出这个是日程约会插件。
其他的如最近使用的程序的name=”mru”、未接电话name=”missedcalls”、电池信号(导航条)name=”iconbar、短信/彩信/邮件插件name=”Messages”、情景模式name=”profile”等等。
但插件的name在不同的主题中可能会有不同的name(name可随意更改),这就要看看作者的喜好了;也有些主题中插件并没有name,这样一来,势必会使我们对插件的识别造成影响,或干脆识别不了,在就需要我们用其他的方法来识别。

我们还可以通过插件代码的内容来识别,这个是是最容易,也是最形象的识别方法。
从内容识别,主要是从插件代码中<label>和</label> 之间的内容(该部分内容将显示会在主题中显示)来识别。

 

<plugin clsid=”{2F930BF0-6FE9-4a53-9E17-88E9247BAB48}” name=”Messages” height=”140″>
<background b-border-width=”0″>
<format state=”selected” bgcolor=”transparent” bgimage=”\Storage\Application Data\Home\QQTang\QQTang_dx.jpg” valign=”top” />
</background>
<label font-size=”14″ x=”5″ y=”37″>
<format state=”selected” bgcolor=”transparent” fgcolor=”#000000″/>
<text>短信: <unreadSMS/>条</text>
</label>
<label font-size=”14″ font-weight=”bold” x=”4″ y=”55″>
<format state=”selected” bgcolor=”transparent” fgcolor=”#A6D4FC”/>
<text>邮件: <unreadEmail/>件</text>
</label>

</plugin>
上面这段代码中的<label>和< /label> 之间有<unreadSMS/>和<unreadEmail/>这两个分别是未读短信和未读邮件,从这里我们可以清楚的知道上面 这段代码是短信/彩信/邮件插件。该插件<label>和</label> 之间的内容还有<unreadSMS/>(彩信)、<unreadVMail>(语音邮件)等,其代码中都有“unread” (“未读”的意思)字样,这让我们可以很好识别该插件。
其他插件识别内容(<label>和</label> 之间的内容)如:
系统标准插件
◆电池信号(导航条) 插件
◎name:iconbar
◎clsid:{837FC251-FE69-43ad-84E0-EBCEDEBA0884}
◎内容(识别):<iconbar/>
◎备注:把<background/>部分去了,就可以显示透明的电池信号(导航条) 插件栏,
如不透明代码

 

QUOTE:

<plugin clsid=”{837FC251-FE69-43ad-84E0-EBCEDEBA0884}” name=”iconbar” height=”20″>
<iconbar fgcolor=”COLOR_TRAYTEXT”/>
<background gradient=”title” bgcolor=”COLOR_TRAYGRADLEFT” b-border-color=”COLOR_WINDOWFRAME” b-border-width=”1″/>
</plugin>
去到掉<background/>部分后:

 

QUOTE:

<plugin clsid=”{837FC251-FE69-43ad-84E0-EBCEDEBA0884}” name=”iconbar” height=”20″>
<iconbar fgcolor=”COLOR_TRAYTEXT”/>
</plugin>
◆最近使用程序插件
◎name:mru
◎clsid:{79EFB752-CB70-446d-B317-499723482B3D}
◎内容(识别):<mru/>、<appname/>(快捷方式名称)
◎备注:<mru/>中
※ icon-size=”16″ 是指显示的图标大小,icon-size=”16″显示为16*16大小,icon- size=”32″显示为32*32大小,最多显示9个图标;
※ max-buttons=”4″ 为显示几个图标,数字为几就显示几个;
※ button-image=”” 为图标的背景图片(引号中为图片路径)。注意:这个背景图片和插件的背 景图片不同。这个具体 怎么用还不知道,曾用过一次。这个可以使最近程序被选择时背景不是单纯的颜色,而可以是突破。如这个:

◆营运商、日期、时间插件
◎name:Carrier
◎clsid:{E09043DF-510E-4841-B652-388316977A7A}
◎内容(识别):<carrier/>(营运商)、<time/>(时间)、<date/>(日期)
◎备注:※ <time/>中的mode=”12″为时间格式。数字是12则为12小时制,数字是24则为24小时制;
※ <date/> 中的mode=”short”为日期格式。short为短日期格式,不显示星期,long为长日期格式,显示星期。

◆日程约会插件
◎name:Calendar
◎clsid:{865A354A-4A96-4687-B001-C155DC0DBE76}
◎内容(识别):<subject/>(约会内容)、<time/>(约会时间)、<location/>(约会地点)
◎备注:

◆全天事件插件,隐藏插件
◎name:AllDay
◎clsid:{2FFD93B3-0FF0-4228-A6D6-D2DF177D7D92}
◎内容(识别):<subject/>、<time/>、<location/>
◎备注:这个我不知道和日程约会插件有什么不同,反正我的感觉是一样的,只不过这个插件是隐藏插件

◆短消息、彩信、邮件插件
◎name:Messaging
◎clsid:{2F930BF0-6FE9-4a53-9E17-88E9247BAB48}
◎内容(识别):<unreadEmail/>(未读邮件)<unreadSMS/>(未读短信)<unreadVMail>(未读语音邮件)<unreadMMS/>(未读彩信)
◎备注:

◆文本插件
◎name:Text
◎clsid:{5419F376-6520-4407-B8B8-740F5B353EDA}
◎内容(识别):
◎备注:这个插件基本上很少用,在其他的插件内部也可以实现,可以说每个插件都包括了它。如短信插件中:

 

QUOTE:

<plugin file=”sysplug.dll” clsid=”{2F930BF0-6FE9-4a53-9E17-88E9247BAB48}” height=”20″>
<background>
<format state=”selected” bgcolor=”#2A2CC5″/>
</background>
<label>
<text>短信:<unreadSMS/></text>
</label>
</plugin>
我们只要把<unreadSMS/>删除,便可以直接显示<text></text> 之间的文本,如上面这段代码中的“短信:”

◆主人信息插件
◎name:Owner
◎clsid:{4824B576-EFFE-45cf-BAE9-649B930CD244}
◎内容(识别):<name/>(姓名)、<phone/>(电话号码)、<email/>(电子邮件地址)、<notes/>(附注)
◎备注:

◆STK插件
◎name:
◎clsid: {4e822425-a00f-497c-80ff-1c554665a369}
◎内容(识别): <scrolltext textsource=”simtkitidletext”/>
<scrolltext textsource=”cellbroadcast”/>
◎备注:没用过,不知道怎么用,也没什么用

◆通话进程插件,隐藏插件
◎name:callprog
◎clsid:{37391041-C324-4725-BEE1-3232ED3539CA}
◎内容(识别):<progress/>
◎备注:一般大家用这个插件时都不会做什么改动,因此一般在<label>和</label>之间可以看到以下内容:
<text lang=”0x0409″>Call in progress:</text>
<text lang=”0x0412″>진행 중인 전화:</text>
<text lang=”0x0411″>通話中:</text>
<text lang=”0x0404″>通话中:</text>
<text lang=”0x0804″>通话中…</text>
如果主题作者没用这个插件,那通话时右键也会变成“通话进程”

◆未接电话插件,隐藏插件
◎name:missedcalls
◎clsid:{0BA8ABB8-1F1D-417f-88C6-DA8530E2E7A6}
◎内容(识别):<calls/>
◎备注:

◆情景模式插件
◎name:profile
◎clsid:{95976968-45D5-40c9-9779-2B859B1C2FEC}
◎内容(识别):<profile/>
◎备注:

系统标准插件基本上就是这些了。

注:以上所述的“内容(识别)”中的内容,如<unreadSMS/>,其处于<label><text>和 </text></label>之间,如<label><text>< unreadSMS/></text></label>,可以在<unreadSMS/>前后,也就是 <text>和</text>之间添加任何系统支持的文字、符号。

*隐藏插件:平时隐藏,只有在事件发生时才出现。如未接电话插件,平常看不见,当有未接电话时就会显示出来。

他第三方插件我就不说了,如果你可以用这些系统插件熟练的制作主题,那基本上那些第三方插件也就没什么问题了,因为基本的东西都是相通的,只不过第三方插件可能要复杂一点,需要设置的参数要多一点。

“Smartphone主题XML教程”的一个回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注