XBMC皮肤开发手册

翻译自:http://wiki.xbmc.org/index.php?title=XBMC_Skinning_Manual

ps:还有好多没有翻译的,后面用到的时候在补上,慢慢完善。


XBMC皮肤开发手册

XBMC包含一个从头编写的新的GUI库。这个库允许你改变XBMC中你能看到的一切,例如图像,所有控件、颜色、字体和文本的位置和大小,通过改变导航,甚至可以增加新的功能。

皮肤系统相当的复杂,开发手册部分致力于提供皮肤时如何工作的深入信息,同时给出一些建议,使得开发之旅多一些快乐。

如果你是刚接触XBMC皮肤开发,那么我们建议,最好是通过现有皮肤中的一个来学习。默认皮肤 confluence 几乎包含了所有的使皮肤引擎强大的技巧和功能,因此这是一个理想的开始之处。你不妨先看一下 “tutorial section on skinning XBMC”(http://wiki.xbmc.org/index.php?title=XBMC_Skinning_Tutorials) 和 “Skinning XBMC”(http://wiki.xbmc.org/index.php?title=Skinning_XBMC)这两篇文章来开始开发之旅,并尝试通过添加一个按钮或者改变纹理和布局来修改一两个窗口。

剖析皮肤

XBMC的皮肤打包放置在XBMC主目录的 addon/目录下,命名形如 skin.confluence。所有的皮肤都放置在上面的目录中。(默认情况下,只有一个皮肤叫做“Project Mayhem III”,它是由 Chokemaniac制作的默认皮肤(这应该是以前版本的情况))

任何额外的皮肤:你创建的,或者是从诸如 www.xboxskins.net 这些地方下载的,都可以放在上面的目录中,然后XBMC可以在用户界面->设置(Appearance Settings)自动检测加载。如果你想开发自己的皮肤,一个比较好的建议是,复制一个现存的皮肤重命名(例如 addon/skin.myskin),然后你尝试修改每个文件,这样你就可以熟悉整个皮肤系统了。

每个皮肤目录包含几个子目录和一个文件:

MySkin/fonts
这个子目录包含皮肤中用到的所有字体文件,在这里,你可以增加或者替换字体。
MySkin/media
这个子目录包含所有的媒体文件(.png/.gif/.jpg...,可以依据个人喜好替换/编辑这些文件。

MySkin/addon.xml
XBMC从这个文件中获取如何找到皮肤中用到的其他文件的信息。这个文件还包含开发人员信息和版本信息。

MySkin/720p

这是一个特定分辨率的目录。XBMC可以运行于不同的显示分辨率,可能在不同分辨率下用到不同的文件(这是因为对于720x480NTSC分辨率和1920x10801080i分辨率来说,在显示上有很大不同的)。 我们另文 “How Window XML Files Are Found”(http://wiki.xbmc.org/index.php?title=Skin.xml#How_window_xml_files_are_found)介绍XBMC是按什么优先顺序来读取不同分辨率皮肤文件的。

皮肤主题

一个皮肤中用到的所有基本的媒体文件都应该压缩到Textures.xbt文件中,并存放到media/目录。你可以用TexturePacker工具来完成这个工作。默认皮肤主题使用的所有图片文件都应该在Textures.xbt文件中。

此外,media/目录中允许有其他 .xbt 文件,每个文件对应不同的皮肤主题。例如,你可以把皮肤的主要纹理贴图文件色调做成红色的,然后创建一个新的主题媒体文件压缩包Red.xbt ——这使得对于一个皮肤,用户能选择更多的显示效果。要记住变更皮肤主题只是使用了不同的纹理贴图文件——皮肤的显示布局不变。用户选定一个皮肤主题后,当某个控件需要用到纹理贴图时,XBMC会先到 <主题名称>.xbt 文件中去找。如果<主题名称>.xpr中没有这个图片文件,它会自动退回到Textures.xbt 文件中读取。也就是说皮肤主题的.xbt文件中只需要包含修改过的纹理贴图文件-所有其他纹理贴图可以使用Textures.xbt

建议用下面的方法建立皮肤主题:
1. 在保存默认纹理贴图文件的目录运行TexturePacker.exe生成Textures.xbt 。
2. 确定制作新皮肤主题时要修改的纹理贴图并把它们拷到一个单独目录中。
3. 在正常的皮肤工作区之外为每个皮肤主题建立单独的目录,然后把针对这些主题修改过的纹理贴图存到里面。
4. 在步骤3建立的每个皮肤主题目录上运行TexturePacker.exe来生成皮肤主题的 .xbt 文件(注意:你可以使用-output参数指定适当的文件名)。
5. Textures.xbt和每个皮肤主题的.xbt文件都存放到你的皮肤的media/目录中,XBMC就能自动找到它们了。

包含文件

另一个特殊的(甚至可说是最重要的)皮肤文件是includes.xml。这个文件正如其名,是定义皮肤中控件的默认外观、大小、位置的地方,它使你在窗口xml文件中不用反复复制不同控件中用到的相同属性设置。例如,你可以设置一个按钮控件的大小和使用的纹理贴图,这样你在其他皮肤文件中就不用重复设置这些详细信息了,除非你在某个特定的窗口中有特殊要求而需要更改默认的外观或大小等属性。

这是非常有用的,因为它大大减少了皮肤开发的工作量。此外,使用包含文件意味着只要在不同显示分辨率的包含文件中调整参数就能很方便地支持不同分辨率了。

其实在2.1版的皮肤引擎支持下,你可以有一个以上的包含文件——您可以指定文件属性来使用不同的包含文件,这使你可以让一个包含文件专注于一组特定的属性。

包含文件的文件结构如下所示:

<includes>

     <include name="whitetext">

       <textcolor>ffffffff</textcolor>

     </include>

     <include file="listdefaults.xml" />

     <default type="button">

       <include>whitetext</include>

     </default>

     <constant name="leftedge">50</constant>

</includes>

从上面的中可以看到,有4个不同类型的包含。第一个 <include> 标签定义的内容会在这个包含名称被引用时插入到引用位置。例如,如果在一个窗口的 .xml 文件中这样写:  <control type="togglebutton">

    <include>whitetext</include>

... other tags go here

</control>

包含标签中定义的<textcolor>标签就会被插入到引用位置。你可以使用多个包含的引用,同时一个包含定义中可以有很多标签内容——甚至可以是一个完整的控件定义或控件组定义。

例子中第二个<include>标签演示如何引用不同文件中的内容。由于没有指定包含名称,这将把整个文件内容插入到引用位置。

<default>标签类似于包含,不同的是它的内容会被同类型的所有控件所引用——如果你没有明确说明空间不使用这个包含的话。在上面的例子中每一个buuton控件都会引用whitetext包含。当然,你可以通过在按钮控件中定义<textcolor>来覆盖这个默认定义。

最后,使用<constant>标签可以定义数值常量(浮点数),这样就可以使用常量名称而不是直接使用数值(<posx>, height="" 等)。这利于使用统一的位置值,也方便调整这些数值,不用每个地方去改了

窗口xml文件

其他xml文件每一个定义皮肤中的一个窗口。它们都有相同的基础结构,让你能在窗口上放置不同的控件,并定义导航操作的方式。

所有的窗口 xml文件和他们代表的内容会在 Apendix I:窗口列表 中找到。

每个窗口都有一个唯一的标识码(id,这个标识码是很重要的。XBMC在源码中用标识码(id)来识别窗口。

此外,每个窗口中的许多控件同样应该有一个唯一的标识码,除非他们只是用于固定内容的图片或标签,XBMC不需要对它做什么操作因而不需要识别它。Window id’s 列在 Apendix I:窗口列表 中

窗口xml文件的结构可以在下面的 窗口结构部分找到。

5 addon.xml

窗口

控件

条件可见

皮肤动画

10 字体

11 Apendix I: 窗口列表

12 Apendix II: 布尔环境列表?

13 Apendix III:信息标签列表?

14 Apendix IV:功能列表?

15 Apendix V:控件列表

16 Apendix VI:默认图标列表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值