[绝对原创]非软件制作主题.代码详细解释
老夫来到84的时间不长。但是,84朋友的热心却给我留下了极深的印象。自进论坛以来一直贡献不大。不过传一些小游戏之类的东西。老夫一向最鄙视只想收获不想付出的行为,所以一直想传一点对大家有帮助的小玩意。最近对主题感兴趣。今天拿出来也给大家玩玩--------不借助软件,全手工制作主题。前面好象苹果同志发过一篇类似的贴子.我这篇东西.不过是锦上添花.说得更详细一点而已.
首先要说明的是:一,这篇教程很长,所以,想看完的话需要一点耐心。
二,老夫写这篇教程,可能对新手会有一定难度。因为涉及到很多代码和专业知识。所以,实在看不懂的朋友就不要硬撑了。还是用软件去做吧。毕竟,现在制作主题的软件有很多。既简单又节省时间。没必要把时间浪费在这个上。这篇教程主要是针对那些软件已经用的滚瓜乱熟或者觉得用软件制作主题没有成就感的朋友。你可以试一试。这种方法做出来的主题和软件做的没有任何区别。如果你头脑够灵活的话。甚至可以比软件做的更好。因为他们的原理是一样的。而软件是死的。人是活的。。。
三,老夫自幼家境贫寒。所以用过的手机不多。二十多年屈指算来也不过两部手机。大学的时候用的是诺基亚的。还是黑白屏幕的那种。没有现在这么高的技术含量。也玩不出什么花样来。现在用的也是诺的5300。是去年老夫过生日,买给自己的礼物(因为是本命年,在母亲强烈建议下选了个红的)。因为接触的手机比较少。所以,这篇教程可能对用5300的朋友最适合。不过,据老夫猜测。只要是用诺基亚S40系统的朋友应该都可以。
[color=black]好了。闲话少说。我们开始“干活”。[/color]
首先。我们要知道我们制作一款主题最重要的部分是哪里。现在你可以在你的电脑上用解压缩软件随便打开一个主题的NTH文件。你可以看一看。在这个文件里。几乎所有的文件都是图片和音乐文件。除了一个theme_descriptor.xml。可以说。这个文件才是主题的灵魂所在。因为手机在读入主题信息的时候。系统最先找到的就是这个文件。这是一个XML文档。它里面标记的信息告诉手机在什么时候用哪个图片或哪个音乐。然后手机记下这些之后才会从这个NTH文件里抽取图片和音乐。对照刚才从XML文档那里得到的信息进行设置。所以。这篇教程主要就是教大家如何编辑XML文档。
PS:在开始最重要的工作之前,提醒你最好把你要用到的素材用PS做好,放到一个文件夹里。免得呆会用的时候,把你的电脑翻得凌乱不堪,像个单身汉的卧房。当然了,我们用的只是素材的文件名。注意:包括扩展名。。这很重要。还有,我还要告诉大家一些关于XML的知识。免得大家搞不清楚重点而出错。1因为我们编辑的是XML文档。所以。所有的格式和标记符号。都要严格的遵循它的使用规范。一个都不能错。否则你做出来得只是一个不能运行或有缺陷的主题。2,在XML文档里。每对< >符号再加上它们中间的内容算作一个元素。元素是组成XML的最小单位,元素和元素之间你可以适当的加一个或者几个空格,让你的XML文档看起来条理更清晰,也方便你制作完成后查找错误。但是,< 和 >之间一定不要乱加东西(当然,如果你是个内行对XML非常了解的话,那就没什么问题了)。。。。。
PS结束。。。。。
[[i] 本帖最后由 huixuanti 于 2007-6-18 22:24 编辑 [/i]] 不错``支持!......... 进入编辑过程。。我会一个元素一个元素的解释给你听,但是,你一定要有耐心。首先在你的桌面上新建一个TXT文件。打开。在第一行输入[color=red]:<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE theme PUBLIC "-//NOKIA//DTD THEME 2.0//EN" "theme.dtd">[/color]
这是第一个和第二个元素(看清楚了吗?这里有两对< >所以是两个元素)。如果你懒得动手输入的话。你可以把红色部分直接复制到你的文档里。整篇教程里也是一样.
这是每个XML文档的开头都要有的元素。也是最重要的。我们先来看看第一个元素都说了些什么:
xml version="1.0" 这是一个声明。表示这是一个XML文档。他遵循的是1.0版本的规范。
encoding="UTF-8"? 这个是说该文档使用的语言编码是UTF-8。默认的语言编码都是这个。如果你想用中文的就把它改成GB2312。不过,我不知道诺基亚是不是支持中文编码。没敢试。
第二个元素:整个第二个元素只是在完成一件事。那就是定义文件类型。它要做的就是把你编辑好的XML文档。和诺基亚定义的主题DTD文件进行对比。看你的文档是否符合它的定义规则。所以这前两个元素十分重要。千万不能错。
下面进入主体部分:
[color=red]<theme name="主题名字" version="2.0">
[/color]第三个元素就是给你的主题取个名字。可以是数字也可以是英文。但不要用中文。接下来我们看下一个:
[color=red]<colors
display="main"
header_font_color="0x99ff99"
status_area_font_color="0x99ff99"
softkey_font_color="0x99ff99"
calendar_highlight_color="0x6666ff"
idle_font_color="0x99ff99"
active_idle_active_font_color="0x99ff99"
active_idle_content_background_color="0xffffff"
shortcut_bar_popup_font_color="0xffffff"
shortcut_bar_popup_background_color="0x99ff99"
menu_font_color="0x99ff99"
menu_highlight_font_color="0xffcc33"
grid_menu_font_color="0x99ff99"
grid_menu_highlight_font_color="0xffffff"
reorder_highlight_font_color="0xffcc33"
grid_highlight_color="0xffffff"
reorder_highlight_color="0xffcc33" />[/color]
[color=black]这个元素就比较长了。它主要是定义各种界面的字体颜色:
header_font_color="0x99ff99"[/color]
[color=black]这个是表头字体颜色,引号里面的部分是用十六进制表示的颜色代码。你可以自己换。不知道颜色代码的朋友可以去百度里搜索。输入颜色代码。会出现很多。这里就不细说了。
header_font_color="0x99ff99"
状态区字体颜色
softkey_font_color="0x99ff99"
软键字体颜色
calendar_highlight_color="0x6666ff"
日历高亮字体颜色
idle_font_color="0x99ff99" 待机字体颜色
active_idle_active_font_color="0x99ff99"[/color]
[color=black]当前待机字体颜色
active_idle_content_background_color="0xffffff"[/color]
[color=black]当前待机背景颜色 shortcut_bar_popup_font_color="0xffffff"[/color]
[color=black]当前快捷栏弹出字体颜色 shortcut_bar_popup_background_color="0x99ff99"
当前快捷栏弹出背景颜色
menu_font_color="0x99ff99"[/color]
[color=red][color=black]列表菜单字体颜色
menu_highlight_font_color="0xffcc33"
列表菜单高亮字体颜色
grid_menu_font_color="0x99ff99"
网格菜单字体颜色
grid_menu_highlight_font_color="0xffffff"
网格菜单高亮字体颜色
reorder_highlight_font_color="0xffcc33"
调整菜单高亮字体颜色
grid_highlight_color="0xffffff"
网格菜单高亮字体颜色
reorder_highlight_color="0xffcc33"
调整菜单高亮字体颜色
到这里为止,以上是所有界面字体颜色的设置中文解释。经常用制作软件的人,应该对这些中文代表什么意思很熟悉了吧?呵呵。。。。PS:以上这些命令的前后顺序是可以调换的。不一定要按我的顺序来。我只是举个例子而已。
[/color]
[/color] 接下来。我们要做的就是编辑主菜单的图标了:
[color=red]<menu_item
item_id="applications"
list_view_icon="图片名称.png"
grid_view_icon="图片名称.png"
animating_grid="图片名称.png"
app_specific_bg="图片名称.gif" />
<menu_item
item_id="messages"
list_view_icon="图片名称.png"
grid_view_icon="图片名称.png"
animating_grid="图片名称.png"
app_specific_bg="图片名称.gif" />[/color]
这里要注意看了:
menu_item
主菜单项目 item_id="applications"
项目名称="百宝箱"
看懂了么?这是一个为百宝箱换图标的元素。这个元素从第一个< 开始,到第一个 > 结束。而下边紧跟的四条是百宝箱在各种状况下使用的图标
list_view_icon="图片名称.png"
列表形式的主菜单百宝箱使用的图标
grid_view_icon="图片名称.png"
网格形式的主菜单百宝箱使用的图标
animating_grid="图片名称.png"
百宝箱使用的动画网格
app_specific_bg="图片名称.gif"
标签背景视图(这个是软件上的说法。)
把上边图片名称的部分换上你要使用的百宝箱图标就OK 了。
到这里为止。后边再加上 />
。百宝箱换图标的元素结束。
然后是就是给短信换个新“叶子”了。。仔细看上面。换短信的和换百宝箱的是一模一样的。只不过是把项目名称换了一下而已
由applications(百宝箱)换成了messages(短信)。其他的图标更换方法也是一样的。只不过是换个名字而已。下面我把各个选项的英文名字说给大家听:
callregister(通讯记录)
contacts(通讯录)
gallery(资料)
media(影音天地)
organizer(管理器)(也叫事务,反正就是日历啦。计算器啦。一些乱七八糟的东西)
push_to_talk(一键通)
services(网络或者服务)
settings(设置)
simatk(SIM卡提供的服务。移动的是动感地带。连通的好象是CDMA吧?)
想换哪个就把item_id="*******" 引号中间的部分该成相对的英文名字。然后就在它下边的四条里换图片吧。如果12个图标都改的话。那么就要有12对应的元素。。还记得元素是什么吗?忘了的话。去前言里看看吧。。。顺便说一句。我觉得图标不要PS的太大。如果太大的话。相临的三个就会连在一起。实在是难看。
正常的用46*46的。动画网格用62*62的。我觉得刚刚好。不会太拥挤。也不会太小。。。。。个人观点。有不同意见的你保留。不要找我理论。。。。。 废话少说。回到正题。下面就是你的宝贝电话的脸面部分了----------------传说中的墙纸:
[color=red]<wallpaper
main_display_graphics="图片名称" />[/color]
(这里的图片名称就要包括扩展名了)这就是你的墙纸;
[color=red]<screensaver
main_display_graphics="图片名称" />[/color]
这是屏保
[color=red]<background
main_default_bg="图片名称"
grid_menu_bg="图片名称"
note_bg="图片名称"
idle_status_area_bg="spacer.png"
idle_softkey_area_bg="spacer.png" />[/color]
这是一个元素。其中涉及到好几个背景的使用。我们一个一个的来看:
background
main_default_bg="图片名称"
这个按软件上的说法是:主要背景(怎么软件上的东西都说的摸棱两可的?)。其实就是你在主菜单中选择一个进去之后的背景。
grid_menu_bg="图片名称"
这个是网格菜单的背景。
note_bg="图片名称"
这个是显示“正在打开文件”时候的那个小方块使用的图片(我也不知道这个应该叫什么。见谅~~~)
idle_status_area_bg="spacer.png"
idle_softkey_area_bg="spacer.png"
这两条你要注意了。这就是传说中去掉桌面背景上下两条蓝边中最关键的部分。这里请注意。这里引用的图片文件名字并没有让你自己更改。而是使用固定的名称“spacer.png”。这个文件你要到论坛里来下了。。。大名鼎鼎的苹果小姐就有提供这个文件。(其实,有兴趣看这个的都已经是使用软件的老手了。我不用说,你也应该会怎么去蓝边了。我是在照顾硬撑到这里的新手而已。)这两条的主要意思就是:
待机时状态区(就是上边那个蓝边部分)使用透明背景
待机时软键区(下边的蓝边部分)是用透明背景
接下来就是日历了的背景了:
[color=red]<calendar_bg
january="图片名称"
february="图片名称"
march="图片名称"
april="图片名称"
may="图片名称"
june="图片名称"
july="图片名称"
august="图片名称"
september="图片名称"
october="图片名称"
november="图片名称"
december="图片名称" />[/color]
中文解释是:
日历背景 一月
二月 三月
四月 五月
六月 七月
八月 九月
十月 十一月
十二月
每个月的日历背景是自动更换的。这个大家都知道了的。
下面是音乐和电影播放器的背景了:
[color=red]<radio_audio_bg
radio_bg="图片名称"
audio_bg="图片名称" />[/color]
这个就简单了。radio_bg是音乐播放器的。audio_bg是电影播放器的。大家把图片名字加进去就可以了。(我最后说一遍:名字要包括扩展名)。好了。下一个
[color=red]<wait_graphics
src="图片名称" />[/color]
这个我都不知道该怎么说了。。。就是在列表状态中。那个你按下它就下。你按上它就上用来选择文件的那个小条条(我的语言能力怎么退化了这么多?)。。。。。。对了。就是那个选择条(居然能想到这个词。。天才~)。这个选择条。你最好自己用PS做一个。5300的。我记得应该是286*53的刚刚好。这个就看自己的喜好了。下一个~~~~~~~~~~~!!
[color=red]<highlight
list="图片名称"
active_idle_row="图片名称" />[/color]
这个也简单:
highlight
list="图片名称"
这个就是那个选择条的高亮状态图片。你可以和正常的用同一张图。也可以换一个。
active_idle_row="图片名称"
这个呢就是。。。。。。。老实说,我也没弄明白这个到底应该怎样翻译。反正它就是等待状态中的那个图片。其实它和显示“正在打开文件”的那个用同一张图的。当然了。如果你不喜欢。你也可以换之。。。按照道理来说。它们应该是同一个功能里的。可我不明白。诺基亚为什么要把它们分开表示。而且这两个状态确实是可以用不同的图片的。好象一般的软件里没有把这两个分开吧??至少我用的就没有。 好了。接下来就到声音的部分了。也是最后一部分了:
[color=red]<tones
ringtone="来电音乐名称"
msg_alert="信息提示声名称" />
<startup
main_display_graphics="开机图片名称"
tone="开机音乐名称" />
<shutdown
main_display_graphics="关机图片名称"
tone="关机音乐名称" />
<transformation_open
main_display_graphics="开盖图片名称"
tone="开盖音乐名称" />
<transformation_close
main_display_graphics="合盖图片名称"
tone="合盖音乐名称" />
</theme>[/color]
顺便说一句,开机,关机。开盖 合盖的图片可以换成动画的。。。。。自己看着办。。
OK。这篇教程到了这里。最重要的XML文档编辑就结束了。接下来。保存退出。然后把编辑好的TXT文件名字改为theme_descriptor.xml 注意。扩展名由原来的TXT改为XML了。。。。改后电脑会提示你。更改扩展名可能导致文件不可用。不用管它。点确定。
最后一步就是。文件整合了。把你在XML文档编辑过程中引用过的所有图片和音乐文件(这次是文件。不是文件名了。)连同编辑好的XML文档一起压在一个压缩包里。这里一定要注意的是。一起放进去的还要有一个名字叫spacer.png的文件。不然你的墙纸会有上下两条蓝边的。
压好后。把压缩包的扩展名。改成NTH。然后就装到你的机机(我知道这个词听起来挺别扭的)里去吧。。。。。
OVER~~~!!
用了四个小时的时间来写这个东西.写到后来已经有点思维混乱了.其中可能有错误的地方.但关键的部分我已经十分注意了.不会影响到主题的使用...
教程里红色的部分.你可以直接复制到你编辑的XML文档里.只要把引号中间的部分参照教程更改一下就可以了......
好了.老夫身体不太好.几个小时的枯坐已经让我形容憔悴不堪了.对着镜子看了一下.满脸阴冷的表情让老夫这颗原本就不大的首级看起来像一个处在寒冰纪的远古地球...在写下去就真的要出人命了
如果哪位发现教程中有错误的地方.和老夫联系或直接给我纠正.免得它害了别人...
如果有人想转贴。我没意见。但是请你注明转自SJ84。。。。因为我以前在其它论坛里经常被人拿着我的东西出去招摇还在下面大摇大摆的签上他的名字。。。已经伤了。。
2007.06.17 凌晨5点
-------------回旋踢 新手,看不懂,有时间慢慢研究下好 老夫还要多说两句.就是,你编辑的XML文档.里面的元素之间的顺序.必须严格的按照老夫教程上的来....否则.老夫保证你做出来的是个用不了的主题.
.如果主题的XML文档使用的是内部DTD文件验证.还可以修改DTD文件来解决这个问题,但是.NOKIA的主题XML文档是使用外部DTD的.也就是说.你编辑的XML文档内容.必须符合NOKIA制定的DTD文件的定义.而它的定义中就包括有元素的排列顺序.如果,你的元素顺序,不是按照这个来编辑的话.那么它就通不过DTD验证......最后的结果就是:恭喜你,你的主题无法使用啊.:lol 没人顶么???
那老夫自己来..:L
...
顶一下~不过你给的图标代码只有11一个~没的5300无线互联这个图标的代码?/!!:'( 楼上的.....没有给出无线互联的代码主要原因是.用不同运营商的卡.这个项的名字好象是不一样的.而且,相同的运营商的不同的卡.名字又不一样了.老夫也无法确定它到底是什么.所以就没有给出来.
也是因为老夫无能.因为版权保护的原因,老夫无法看见原机自带的主题对这一项是如何定义的.所以也就没有给出来....对不起了.....
------回旋踢 哇~~写的比偶的还详细:$ 偶也来给你补充修改一下:lol
[color=red]note_bg="图片名称"
这个是显示“正在打开文件”时候的那个小方块使用的图片(我也不知道这个应该叫什么。见谅~~~)[/color]
这个叫警告背景
即[attach]40922[/attach]里的[attach]40921[/attach]
[color=#ff0000]<wait_graphics
src="图片名称" />
[/color][color=red]这个我都不知道该怎么说了。。。就是在列表状态中。那个你按下它就下。你按上它就上用来选择文件的那个小条条[/color]
这个不叫选择条,这个叫等待图像
即[attach]40922[/attach]里的[attach]40920[/attach]
(这个是苹果自己做的:$ )
[color=red]active_idle_row="图片名称"
这个呢就是。。。。。。。老实说,我也没弄明白这个到底应该怎样翻译。反正它就是等待状态中的那个图片。[/color]
那这个自然就不是等待图片咯,既然他在高亮里面,那他就是高亮图片
那我就借回旋踢的帖子,用我做高亮比较多的一个主题来给大家看看高亮
<highlight
tab="203X693.png"
list="red heart.png"
grid="high_grey.png"
active_idle_row="29.png"
active_idle_shortcut_bar="203X693.png" />
tab="203X693.png"是标签菜单项目高亮
即[attach]40926[/attach]里的[attach]40918[/attach]
list="red heart.png"是列表菜单项目高亮,也就是楼猪所说的[color=red]“[color=red]你按下它就下,[/color]你按上它就上用来选择文件的那个小条条”[/color]也就是选择条
即[attach]40924[/attach]里的[attach]40921[/attach]
grid="high_grey.png"是网格菜单项目高亮
即[attach]40925[/attach]里的[attach]40919[/attach]
active_idle_row="29.png"是当前待机行高亮
即[attach]40923[/attach]里的[attach]40917[/attach]
active_idle_shortcut_bar="203X693.png"是当前待机快捷栏高亮
即[attach]40923[/attach]里的[attach]40918[/attach]
嗯,好了基本上就是这样,别的楼猪都说得很好了:P
红色部分为引用楼猪的话;P 恩..楼上非常强悍...
没错..刚刚仔细看了一下.你说的这几个确实是老夫写错了.....
老夫叩谢....:handshake 楼主能图文结合吗??? 哇,真是长了见识了~楼主和oO蘋果Ooo都好厉害哦,佩服死你们了·~~·
加油加油,再接再厉~~~ 汗……。真的是超级长……不过感谢LZ!!我一定会努力看的!!!头晕中…… 晕。。。。。。。。。。头疼 高手就是高手,真觉得自己需要学习的东西太多了. 还是菜鸟,现在看不懂`
这属于编程么?``
高手如云哦`这里! 呵呵,整了半小时,整好了~~头晕 啊 顶你一回,真是不错
厉害啊
玩代码的楼主同志 望尘莫及啊............. 好强悍啊,看得我头都晕了,牛人啊。佩服! 不错``支持!......... 好长呀!! 对对~顺序很重要~我平时没事改XML玩的时候就发现过这个问题~~可是没什么耐心去学这个XML,所以,佩服楼主啊!! 晕。。。。。。。。。。头疼 晕。。。。。。。。。。头疼 询问一下,我做出来的主题,如何打开代码?用记事本打开,怎么是乱码?
问题比较小白,请大虾别见笑。谢谢! 强悍!!!!楼主太伟大了! 哎,
自愧不如,
早知道,
还,
不如,
学计算机系去.
这位大伯真是厉害,;P 哇塞!高手啊!!! 长知识了:victory: :victory: :victory: 请问那个"功能表"字体颜色要在哪修改?
ding
rencia ya rencairencairencairencai :)[size=6] [/size][font=宋体][size=5]好家伙!小弟佩服!!!![/size][/font][font=宋体][size=5]楼主 你在广州啊? 有机会亲自当面向你请教!![/size][/font]
[font=宋体][size=5]我今年刚高考,即将攻读的也是计算机编程方面的专业,华师的提前批.你应该知道的吧?:call: [/size][/font] 好详细~~太棒了~~~ 谢谢楼主拉 LZ是问号级的人物!!!!
我正努力看您的东西..一会也要试着做一个~
呵呵, 汗……。真的是超级长……不过感谢LZ!!我一定会努力看的!!!头晕中…… 虽然 已经知道
但是 还要顶一下