SkinUI入门教程

SkinUI入门教程


1.3 文件结构

<p>SkinUI应用程序结构简单,主要由源文件、资源文件和皮肤文件组成。使用SkinUI Sln++工具,新建工程【Hello World】。可以看到整个工程的文件结构如下:</p> <pre><code class="language-c">I----【bin】 //可执行文件和资源文件 I I----【debug】 //Debug版本的可执行文件和自由文件 I I----【cef】 //Debug版本的cef控件支持文件 I I----【res】 //所有资源文件 I I----【HelloWorld】 //HelloWorld的资源文件 I I----【SkinUI】 //SkinUI的资源文件 I I----【skin】 //所有皮肤文件 I I----【HelloWorld】 //HelloWorld的皮肤文件 I I----【release】 //cef控件支持文件 I I----【cef】 //Release版本的cef控件支持文件 I I----【res】 //所有资源文件 I I----【HelloWorld】 //HelloWorld的资源文件 I I----【SkinUI】 //SkinUI的资源文件 I I----【skin】 //所有皮肤文件 I I----【HelloWorld】 //HelloWorld的皮肤文件 I----【src】 //所有源码文件 I I----【HelloWorld】 //HelloWorld源码文件 I I----【Include】 //所有头文件 I I----【SkinUI】 //SkinUI的头文件</code></pre> <p>如果不需要支持CEF控件,发布时可以删除【cef】文件夹,大大减小安装包的体积。</p> <h2>1 源码文件</h2> <p>SkinUI应用程序至少需要一个应用程序入口函数、一个应用程序类和若干对话框类。如果需要自定义控件,还会有一些自定义控件类。</p> <h3>1.1应用程序入口</h3> <p>Win32窗口程序的入口函数为WinMain,SkinUI应用程序直接使用工具生成的代码即可。</p> <pre><code class="language-cpp">int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { return SkinUI::WinMain(hInstance, lpCmdLine, nCmdShow); }</code></pre> <h3>1.2 应用程序类</h3> <p>SkinUI程序在整个生命周期只会实例化一个应用程序类。我们需要继承CSkinApp,实现两个接口,完成初始化操作并弹出主窗口。</p> <p>应用程序类的生命周期为整个程序的生命周期,我们可以在此缓存数据。例如,可以在此处缓存用户名和用户ID。具体代码如下:</p> <h5>头文件</h5> <pre><code class="language-cpp">class CHelloWorld : public CSkinApp { public: CHelloWorld(); public: virtual BOOL InitInstance(ResType&amp;amp; resType); virtual void Run(const tstring&amp;amp; strCmdLine, int nCmdShow); virtual void ExitInstance(); };</code></pre> <h5>源文件</h5> <pre><code class="language-cpp">CHelloWorld theApp; CHelloWorld::CHelloWorld() { } BOOL CHelloWorld::InitInstance(ResType&amp;amp; resType) { SkinUI::LoadMySkin(_T(&amp;quot;C:\\MySkin\\HelloWorld\\&amp;quot;)); //加载自定义皮肤 resType = RT_FILE; //资源类型为文件资源 //resType = RT_FILE_PACKAGE; //资源类型为文件资源包 //resType = RT_RC_PACKAGE; //资源类型为RC资源包 return TRUE; } void CHelloWorld::Run(const tstring&amp;amp; strCmdLine, int nCmdShow) { CMainDialog dlg; SkinUI::SetMainWnd(&amp;amp;dlg);//设置主窗口 dlg.DoModal(NULL);//弹出主对话框 } void CHelloWorld::ExitInstance() { //此处做一些清理操作 }</code></pre> <h3>1.3 主对话框</h3> <p>主对话框是程序弹出的第一个窗口。窗口的布局由xml格式的布局文件指定,需要在构造函数处传递给基类。主窗口的布局文件通常为&quot;MainDialog.xml&quot;。</p> <p>可以通过布局文件指定一些窗口的基本属性,例如窗口大小,标题栏高度等。</p> <h5>头文件</h5> <pre><code class="language-c">class CMainDialog : public CSkinDialog { public: CMainDialog(); public: virtual void OnInitDialog(); protected: void OnNcDestroy(BOOL&amp;amp; bHandle); SKINUI_DECLARE_MESSAGE_MAP() };</code></pre> <h5>源文件</h5> <pre><code class="language-c">//此处是消息映射后,这里只处理WM_NCDESTROY SKINUI_BEGIN_MESSAGE_MAP(CMainDialog, CSkinDialog) ON_SKINUI_WM_NCDESTROY() SKINUI_END_MESSAGE_MAP() CMainDialog::CMainDialog() : CSkinDialog(_T(&amp;quot;MainDialog.xml&amp;quot;))//设置主对话框的布局文件 { } void CMainDialog::OnInitDialog() { CSkinDialog::OnInitDialog(); //可以在此处添加初始化代码 } void CMainDialog::OnNcDestroy(BOOL&amp;amp; bHandle) { bHandle = FALSE; PostQuitMessage(0);//发送这条消息后,应用程序进程退出 }</code></pre> <h2>2 资源文件</h2> <p>整个资源的文件结构如下:</p> <pre><code class="language-c">I----【res】 //所有资源目录 I I----【SkinUI】 //系统资源目录 I I----【image】 //系统图片目录 I I----【Button.png】 //系统图片MyButton.png I I----【layout】 //系统布局目录 I I----【Button.xml】 //系统布局文件MainDialog.xml I I----【menu】 //系统菜单目录 I I----【EditMenu.xml】 //系统菜单文件MainMenu.xml I I----【value】 //系统配置目录 I I----【color.xml】 //系统颜色配置文件 I I----【image.xml】 //系统图片配置文件 I I----【font.xml】 //系统字体配置文件 I I----【config.xml】 //系统全局配置文件 I I----【string】 //系统字符串目录 I I----【2052】 //系统简体字符串目录 I I----【string.xml】 //系统简体字符串文件 I I----【1033】 //系统英文字符串目录 I I----【string.xml】 //系统英文字符串文件 I I----【1028】 //系统繁体字符串目录 I I----【string.xml】 //系统繁体字符串文件 I I----【HelloWorld】 //用户资源目录 I I----【image】 //用户图片目录 I I----【MyButton.png】 //用户图片MyButton.png I I----【layout】 //用户布局目录 I I----【MainDialog.xml】 //用户布局文件MainDialog.xml I I----【menu】 //用户菜单目录 I I----【MainMenu.xml】 //用户菜单文件MainMenu.xml I I----【value】 //用户配置目录 I I----【color.xml】 //用户颜色配置文件 I I----【image.xml】 //用户图片配置文件 I I----【font.xml】 //用户字体配置文件 I I----【config.xml】 //用户全局配置文件 I I----【string】 //用户字符串目录 I I----【2052】 //用户简体字符串目录 I I----【string.xml】 //用户简体字符串文件 I I----【1033】 //用户英文字符串目录 I I----【string.xml】 //用户英文字符串文件 I I----【1028】 //用户繁体字符串目录 I I----【string.xml】 //用户繁体字符串文件</code></pre> <h3>2.1 图片文件</h3> <p>系统相关的图片放在文件夹【SkinUI\image】,业务相关的图片放在文件夹【HelloWorld\image】。</p> <p>另外,需要在图片配置文件指定图片的九宫格拉伸范围和多态图片的帧数。不在配置文件指定的情况下,图片默认情况下不支持九宫格拉伸,只有一帧。</p> <p>图片推荐使用png格式,当然也支持其他图片格式。</p> <h3>2.2 布局文件</h3> <p>系统相关的布局文件放在文件夹【SkinUI\layout】,业务相关的布局文件放在文件夹【HelloWorld\layout】。</p> <p>为了实现最大可能的扩展性,不仅对话框可以设置布局文件,其他任何控件都可以设置布局文件。例如,我们可以给按钮类设置不同的布局文件得到各式各样的按钮,可以给列表项设置不同的布局文件,得到不同的列表项。</p> <p>对话框的布局文件以&quot;SkinDialog&quot;为根节点,这个节点的属性可以指定对话框的属性。</p> <p>下面是一个对话框的布局文件:</p> <pre><code class="language-xml">&amp;lt;SkinDialog DefaultWidth=&amp;quot;800&amp;quot; //默认宽度为800像素 DefaultHeight=&amp;quot;540&amp;quot; //默认高度为540像素 MinWidth=&amp;quot;600&amp;quot; //最小宽度为600像素 MinHeight=&amp;quot;400&amp;quot; //最小高度为400像素 TitleHeight=&amp;quot;32&amp;quot; //标题高度为32像素 ThemeHeight=&amp;quot;100&amp;quot; //主题高度为100像素 Icon=&amp;quot;128&amp;quot; //图标使用Id为128的ico文件 AllowMove=&amp;quot;true&amp;quot; //允许窗口拖动 OpenAreo=&amp;quot;true&amp;quot; //允许毛玻璃效果 Resize=&amp;quot;true&amp;quot; //允许改变大小 SysButton=&amp;quot;SKIN;MENU;MIN;CLOSE&amp;quot; //四个系统按钮:皮肤、主菜单、最小化、关闭 Caption=&amp;quot;IDS_APP_NAME&amp;quot; //标题为字符串IDS_APP_NAME Animation=&amp;quot;SizeChange&amp;quot; //窗口动画类型为SizeChange Menu=&amp;quot;MainMenu.xml&amp;quot;&amp;gt; //点击主菜单按钮,弹出的菜单由MainMenu.xml指定 &amp;lt;/SkinDialog&amp;gt;</code></pre> <h3>2.3 菜单文件</h3> <p>系统相关的菜单文件放在文件夹【SkinUI\menu】,业务相关的菜单文件放在文件夹【HelloWorld\menu】。</p> <p>菜单文件的格式如下:</p> <pre><code class="language-xml">&amp;lt;Menu&amp;gt; &amp;lt;MenuItem Id=&amp;quot;1003&amp;quot; Text=&amp;quot;IDS_ABOUT&amp;quot; Icon=&amp;quot;about.png&amp;quot;/&amp;gt; &amp;lt;MenuItem Id=&amp;quot;1004&amp;quot; Text=&amp;quot;IDS_HELP&amp;quot; Icon=&amp;quot;help.png&amp;quot;/&amp;gt; &amp;lt;MenuItem Separator=&amp;quot;true&amp;quot;/&amp;gt; &amp;lt;MenuItem Id=&amp;quot;2&amp;quot; Text=&amp;quot;IDS_QUIT&amp;quot; Icon=&amp;quot;quit.png&amp;quot;/&amp;gt; &amp;lt;/Menu&amp;gt;</code></pre> <h4>2.3.1 菜单项</h4> <pre><code class="language-xml">&amp;lt;MenuItem Id=&amp;quot;1003&amp;quot; Text=&amp;quot;IDS_ABOUT&amp;quot; Icon=&amp;quot;about.png&amp;quot;/&amp;gt;</code></pre> <ul> <li> <p>通过属性[id],指定菜单的Id 【Id=&quot;1003&quot;】表示菜单项Id为1003。</p> </li> <li> <p>通过属性[Text],指定菜单的文本 【Text=&quot;IDS_ABOUT&quot;】表示菜单项文本为IDS_ABOUT。</p> </li> <li>通过属性[Icon],指定菜单的图标 【Icon=&quot;about.png&quot;】表示菜单项图标为about.png。</li> </ul> <p>点击菜单项后,会给当前窗口发送WM_COMMAND消息。</p> <p>通过UI更新消息禁用菜单或者选中菜单,还可以通过全局配置文件设置菜单项的高度。</p> <h4>2.3.2 菜单分割条</h4> <pre><code class="language-xml">&amp;lt;MenuItem Separator=&amp;quot;true&amp;quot;/&amp;gt;</code></pre> <p>通过全局配置文件设置菜单分割条的高度。</p> <h3>2.4 配置文件</h3> <h4>2.4.1 颜色配置文件</h4> <p>系统相关的颜色配置文件为【SkinUI\value\color.xml】,业务相关的颜色配置文件为【HelloWorld\value\color.xml】。</p> <p>文件的格式如下:</p> <pre><code class="language-xml">&amp;lt;ColorTable&amp;gt; &amp;lt;Color Id=&amp;quot;ID_COLOR_BLACK&amp;quot;&amp;gt;255,0,0,0&amp;lt;/Color&amp;gt; &amp;lt;Color Id=&amp;quot;ID_COLOR_WHITE&amp;quot;&amp;gt;255,255,255,255&amp;lt;/Color&amp;gt; &amp;lt;Color Id=&amp;quot;ID_COLOR_TEXT&amp;quot;&amp;gt;255,64,64,64&amp;lt;/Color&amp;gt; &amp;lt;/ColorTable&amp;gt;</code></pre> <pre><code class="language-xml">&amp;lt;Color Id=&amp;quot;ID_COLOR_BLACK&amp;quot;&amp;gt;255,0,0,0&amp;lt;/Color&amp;gt;</code></pre> <ul> <li> <p>表示一种颜色</p> </li> <li> <p>通过属性[id],指定颜色的Id 【Id=&quot;1003&quot;】表示颜色Id为ID_COLOR_BLACK。</p> </li> <li>通过节点值,指定颜色的ARGB 【255,0,0,0】表示颜色的Alpha为255,Red为0,Green为0,Blue为0。</li> </ul> <p>颜色可以在代码中使用,也可以直接在布局文件中使用。可以作为背景颜色,也可以作为字体颜色,还可以用来绘制线条、绘制矩形、填充矩形。</p> <h4>2.4.2 图片配置文件</h4> <p>系统相关的图片配置文件为【SkinUI\value\image.xml】,业务相关的图片配置文件为【HelloWorld\value\image.xml】。</p> <p>图片配置文件文件的格式如下:</p> <pre><code class="language-xml">&amp;lt;ImageTable&amp;gt; &amp;lt;Image Name=&amp;quot;Progress.png&amp;quot; Frame=&amp;quot;2&amp;quot; Patch=&amp;quot;7,2,7,2&amp;quot;/&amp;gt; &amp;lt;Image Name=&amp;quot;Button.png&amp;quot; Frame=&amp;quot;4&amp;quot;/&amp;gt; &amp;lt;Image Name=&amp;quot;Edit.png&amp;quot; Frame=&amp;quot;4&amp;quot;/&amp;gt; &amp;lt;/ImageTable&amp;gt;</code></pre> <pre><code class="language-xml">&amp;lt;Image Name=&amp;quot;Progress.png&amp;quot; Frame=&amp;quot;2&amp;quot; Patch=&amp;quot;7,2,7,2&amp;quot;/&amp;gt;</code></pre> <ul> <li> <p>表示一张图片</p> </li> <li> <p>通过属性[Name],指定图片的名字 【Name=&quot;Progress.png&quot;】表示图片名字为Progress.png。</p> </li> <li> <p>通过属性[Frame],指定图片的态数 【Frame=&quot;2&quot;】表示图片为两态合并为一张图片。</p> </li> <li>通过属性[Patch],指定图片的九宫格拉伸范围 【Patch=&quot;7,2,7,2&quot;】表示图片不拉伸范围为距左边7像素,距上边2像素,距右边7像素,距下边2像素。</li> </ul> <p>图片可以在代码中使用,也可以直接在布局文件中使用。可以作为背景、也可以成为ImageView的展示。</p> <h4>2.4.3 字符串配置文件</h4> <p>系统相关的字符串配置文件为【res\SkinUI\string\xxx\string.xml】。业务相关的字符串配置文件为【res\HelloWorld\string\xxx\string.xml】。</p> <p>SkinUI支持多语言,xxx表示语言代码,例如:</p> <ul> <li> <p>2052表示简体中文</p> </li> <li> <p>1033表示英文</p> </li> <li>1028表示繁体中文</li> </ul> <p>文件的格式如下:</p> <pre><code class="language-xml">&amp;lt;StringTable&amp;gt; &amp;lt;String Id=&amp;quot;IDS_MIN_TIPS&amp;quot;&amp;gt;最小化&amp;lt;/String&amp;gt; &amp;lt;String Id=&amp;quot;IDS_MAX_TIPS&amp;quot;&amp;gt;最大化&amp;lt;/String&amp;gt; &amp;lt;String Id=&amp;quot;IDS_MENU_TIPS&amp;quot;&amp;gt;主菜单&amp;lt;/String&amp;gt; &amp;lt;/StringTable&amp;gt;</code></pre> <p>字符串可以在代码中使用,也可以直接在布局文件中使用。</p> <pre><code class="language-xml">&amp;lt;String Id=&amp;quot;IDS_MEMU_TIPS&amp;quot;&amp;gt;主菜单&amp;lt;/String&amp;gt;</code></pre> <ul> <li> <p>表示一个字符串。</p> </li> <li> <p>通过属性[id],指定字符串的Id 【Id=&quot;IDS_MEMU_TIPS&quot;&gt;】表示字符串Id为IDS_MEMU_TIPS。</p> </li> <li>通过节点值,指定字符串的值 【主菜单】表示字符串的值为&quot;主菜单&quot;。</li> </ul> <h4>2.4.4 字体配置文件</h4> <p>系统相关的字体配置文件为【SkinUI\value\font.xml】,业务相关的字体配置文件为【HelloWorld\value\font.xml】。</p> <p>文件的格式如下:</p> <pre><code class="language-xml">&amp;lt;FontFamily&amp;gt; &amp;lt;Familys&amp;gt; &amp;lt;Family&amp;gt;微软雅黑&amp;lt;/Family&amp;gt; &amp;lt;Family&amp;gt;新宋体&amp;lt;/Family&amp;gt; &amp;lt;Family&amp;gt;宋体&amp;lt;/Family&amp;gt; &amp;lt;/Familys&amp;gt; &amp;lt;Fonts&amp;gt; &amp;lt;Font Id=&amp;quot;ID_FONT_SMALL&amp;quot; Size=&amp;quot;8&amp;quot; Bold=&amp;quot;false&amp;quot; Italic=&amp;quot;false&amp;quot; Strikeout=&amp;quot;false&amp;quot; Underline=&amp;quot;false&amp;quot;/&amp;gt; &amp;lt;Font Id=&amp;quot;ID_FONT_BOLD&amp;quot; Size=&amp;quot;9&amp;quot; Bold=&amp;quot;true&amp;quot; Italic=&amp;quot;false&amp;quot; Strikeout=&amp;quot;false&amp;quot; Underline=&amp;quot;false&amp;quot;/&amp;gt; &amp;lt;Font Id=&amp;quot;ID_FONT_BIG&amp;quot; Size=&amp;quot;12&amp;quot; Bold=&amp;quot;false&amp;quot; Italic=&amp;quot;false&amp;quot; Strikeout=&amp;quot;false&amp;quot; Underline=&amp;quot;false&amp;quot;/&amp;gt; &amp;lt;/Fonts&amp;gt; &amp;lt;/FontFamily&amp;gt;</code></pre> <h5>字体家族</h5> <pre><code class="language-xml"> &amp;lt;Familys&amp;gt; &amp;lt;Family&amp;gt;微软雅黑&amp;lt;/Family&amp;gt; &amp;lt;Family&amp;gt;新宋体&amp;lt;/Family&amp;gt; &amp;lt;Family&amp;gt;宋体&amp;lt;/Family&amp;gt; &amp;lt;/Familys&amp;gt;</code></pre> <p>上面指定了三种字体家族,程序优先使用&quot;微软雅黑&quot;,如果系统没有安装,则使用&quot;新宋体&quot;,如果依然没安装,则使用&quot;宋体&quot;。如果宋体也没有安装,则会使用系统默认字体。</p> <p>字体可以在代码中使用,也可以直接在布局文件中使用。</p> <pre><code class="language-xml">&amp;lt;Font Id=&amp;quot;ID_FONT_BOLD&amp;quot; Size=&amp;quot;9&amp;quot; Bold=&amp;quot;true&amp;quot; Italic=&amp;quot;false&amp;quot; Strikeout=&amp;quot;false&amp;quot; Underline=&amp;quot;false&amp;quot;/&amp;gt;</code></pre> <ul> <li> <p>表示一种字体。</p> </li> <li> <p>通过属性[id],指定字体的Id 【Id=&quot;ID_FONT_BOLD&quot;】表示字体Id为ID_FONT_BOLD。</p> </li> <li> <p>通过属性[Size],指定字体的大小 【Size=&quot;9&quot;】表示字体为9号字体。</p> </li> <li> <p>通过属性[Bold=&quot;true&quot;],指定字体是否加粗 【Bold=&quot;true&quot;】表示字体加粗。</p> </li> <li> <p>通过属性[Italic=&quot;false&quot;],指定字体是否为斜体 【Italic=&quot;false&quot;】表示字体不是斜体。</p> </li> <li> <p>通过属性[Strikeout=&quot;false&quot;],指定字体是否需要加删除线 【Strikeout=&quot;false&quot;】表示字体不加删除线。</p> </li> <li>通过属性[Underline=&quot;false&quot;],指定字体是否需要加下划线 【Underline=&quot;false&quot;】表示字体不加下划线。</li> </ul> <h4>2.4.5 全局配置文件</h4> <p>全局配置文件为文件夹【value】根目录下的【config.xml】。</p> <p>文件的格式如下:</p> <pre><code class="language-xml">&amp;lt;Configs&amp;gt; &amp;lt;DialogRadius&amp;gt;8&amp;lt;/DialogRadius&amp;gt; &amp;lt;DialogBorderColor&amp;gt;ID_COLOR_BORDER&amp;lt;/DialogBorderColor&amp;gt; &amp;lt;DialogCaptionFontColor&amp;gt;ID_COLOR_CAPTION&amp;lt;/DialogCaptionFontColor&amp;gt; &amp;lt;DialogCaptionFontStyle&amp;gt;ID_FONT_BOLD&amp;lt;/DialogCaptionFontStyle&amp;gt; &amp;lt;DialogShadowPatch&amp;gt;12,12,12,12&amp;lt;/DialogShadowPatch&amp;gt; &amp;lt;DialogSysButtonRightOffset&amp;gt;10&amp;lt;/DialogSysButtonRightOffset&amp;gt; &amp;lt;MenuMinWidth&amp;gt;150&amp;lt;/MenuMinWidth&amp;gt; &amp;lt;MenuItemHeight&amp;gt;24&amp;lt;/MenuItemHeight&amp;gt; &amp;lt;MenuSeparatorHeight&amp;gt;5&amp;lt;/MenuSeparatorHeight&amp;gt; &amp;lt;FullTransparentSkin&amp;gt;true&amp;lt;/FullTransparentSkin&amp;gt; &amp;lt;/Configs&amp;gt;</code></pre> <p>上面的配置表示以下信息:</p> <ul> <li> <p>&lt;DialogRadius&gt;8&lt;/DialogRadius&gt; 对话框为圆角矩形,圆角半径为8</p> </li> <li> <p>&lt;DialogBorderColor&gt;ID_COLOR_BORDER&lt;/DialogBorderColor&gt; 对话框边框颜色为ID_COLOR_BORDER</p> </li> <li> <p>&lt;DialogCaptionFontColor&gt;ID_COLOR_CAPTION&lt;/DialogCaptionFontColor&gt; 对话框标题栏颜色为ID_COLOR_CAPTION</p> </li> <li> <p>&lt;DialogCaptionFontStyle&gt;ID_FONT_BOLD&lt;/DialogCaptionFontStyle&gt; 对话框标题栏字体为ID_FONT_BOLD</p> </li> <li> <p>&lt;DialogShadowPatch&gt;12,12,12,12&lt;/DialogShadowPatch&gt; 对话框阴影范围为左边12像素,上边12像素,右边12像素,下边12像素</p> </li> <li> <p>&lt;DialogSysButtonRightOffset&gt;10&lt;/DialogSysButtonRightOffset&gt; 对话框系统按钮距右边10个像素</p> </li> <li> <p>&lt;MenuMinWidth&gt;150&lt;/MenuMinWidth&gt; 菜单最小宽度为150像素</p> </li> <li> <p>&lt;MenuItemHeight&gt;24&lt;/MenuItemHeight&gt; 菜单项高度为24像素</p> </li> <li> <p>&lt;MenuSeparatorHeight&gt;5&lt;/MenuSeparatorHeight&gt; 菜单分隔条高度为5像素</p> </li> <li>&lt;FullTransparentSkin&gt;true&lt;/FullTransparentSkin&gt; 对话框支持全透明皮肤</li> </ul> <h2>3 皮肤文件</h2> <p>整个皮肤目录的文件结构如下:</p> <pre><code class="language-c">I----【skin】 //所有皮肤文件 I I----【HelloWorld】 //HelloWorld的皮肤文件 I I----【default】 //默认皮肤 I I----【theme.png】 //皮肤文件 I I----【thumb.png】 //皮肤缩略图 I I----【1】 //系统自带皮肤1 I I----【theme.png】 //皮肤文件 I I----【thumb.png】 //皮肤缩略图 I I----【2】 //系统自带皮肤2 I I----【theme.png】 //皮肤文件 I I----【thumb.png】 //皮肤缩略图 I I----【3】 //系统自带皮肤3 I I----【theme.png】 //皮肤文件 I I----【thumb.png】 //皮肤缩略图 I I----【skin.xml】 //皮肤配置文件</code></pre> <p>皮肤配置文件的格式如下:</p> <pre><code class="language-xml">&amp;lt;Skins&amp;gt; &amp;lt;Skin Name=&amp;quot;default&amp;quot; Color=&amp;quot;254,255,187,3&amp;quot;/&amp;gt; &amp;lt;Skin Name=&amp;quot;1&amp;quot; Color=&amp;quot;254,82,207,209&amp;quot;/&amp;gt; &amp;lt;Skin Name=&amp;quot;2&amp;quot; Color=&amp;quot;254,170,202,53&amp;quot;/&amp;gt; &amp;lt;Skin Name=&amp;quot;3&amp;quot; Color=&amp;quot;254,248,251,220&amp;quot;/&amp;gt; &amp;lt;Skin Name=&amp;quot;4&amp;quot; Color=&amp;quot;254,107,71,18&amp;quot;/&amp;gt; &amp;lt;Skin Name=&amp;quot;5&amp;quot; Color=&amp;quot;254,118,176,252&amp;quot;/&amp;gt; &amp;lt;Skin Name=&amp;quot;6&amp;quot; Color=&amp;quot;254,70,140,240&amp;quot;/&amp;gt; &amp;lt;Skin Name=&amp;quot;7&amp;quot; Color=&amp;quot;254,195,221,212&amp;quot;/&amp;gt; &amp;lt;Skin Name=&amp;quot;8&amp;quot; Color=&amp;quot;254,75,87,101&amp;quot;/&amp;gt; &amp;lt;Skin Name=&amp;quot;9&amp;quot; Color=&amp;quot;254,83,178,16&amp;quot;/&amp;gt; &amp;lt;Skin Name=&amp;quot;10&amp;quot; Color=&amp;quot;254,67,103,163&amp;quot;/&amp;gt; &amp;lt;Skin Name=&amp;quot;11&amp;quot; Color=&amp;quot;254,187,224,243&amp;quot;/&amp;gt; &amp;lt;Skin Name=&amp;quot;101&amp;quot; Color=&amp;quot;255,22,154,218&amp;quot;/&amp;gt; &amp;lt;Skin Name=&amp;quot;102&amp;quot; Color=&amp;quot;255,40,138,221&amp;quot;/&amp;gt; &amp;lt;Skin Name=&amp;quot;103&amp;quot; Color=&amp;quot;255,49,166,107&amp;quot;/&amp;gt; &amp;lt;Skin Name=&amp;quot;104&amp;quot; Color=&amp;quot;255,218,67,78&amp;quot;/&amp;gt; &amp;lt;Skin Name=&amp;quot;105&amp;quot; Color=&amp;quot;255,229,98,129&amp;quot;/&amp;gt; &amp;lt;Skin Name=&amp;quot;106&amp;quot; Color=&amp;quot;255,177,99,159&amp;quot;/&amp;gt; &amp;lt;Skin Name=&amp;quot;107&amp;quot; Color=&amp;quot;255,89,92,160&amp;quot;/&amp;gt; &amp;lt;Skin Name=&amp;quot;108&amp;quot; Color=&amp;quot;255,48,116,193&amp;quot;/&amp;gt; &amp;lt;Skin Name=&amp;quot;109&amp;quot; Color=&amp;quot;255,0,130,154&amp;quot;/&amp;gt; &amp;lt;Skin Name=&amp;quot;110&amp;quot; Color=&amp;quot;255,79,176,172&amp;quot;/&amp;gt; &amp;lt;Skin Name=&amp;quot;111&amp;quot; Color=&amp;quot;255,112,197,196&amp;quot;/&amp;gt; &amp;lt;Skin Name=&amp;quot;112&amp;quot; Color=&amp;quot;255,128,77,77&amp;quot;/&amp;gt; &amp;lt;Skin Name=&amp;quot;113&amp;quot; Color=&amp;quot;255,240,188,89&amp;quot;/&amp;gt; &amp;lt;Skin Name=&amp;quot;114&amp;quot; Color=&amp;quot;255,207,186,170&amp;quot;/&amp;gt; &amp;lt;Skin Name=&amp;quot;115&amp;quot; Color=&amp;quot;255,72,72,200&amp;quot;/&amp;gt; &amp;lt;Skin Name=&amp;quot;116&amp;quot; Color=&amp;quot;255,104,72,200&amp;quot;/&amp;gt; &amp;lt;Skin Name=&amp;quot;117&amp;quot; Color=&amp;quot;255,136,72,200&amp;quot;/&amp;gt; &amp;lt;/Skins&amp;gt;</code></pre> <pre><code class="language-xml">&amp;lt;Skin Name=&amp;quot;default&amp;quot; Color=&amp;quot;254,255,187,3&amp;quot;/&amp;gt;</code></pre> <ul> <li> <p>表示一张皮肤。</p> </li> <li> <p>通过属性[Name],指定皮肤的名字 【Name=&quot;default&quot;】表示对应目录【skin\default】下的皮肤。</p> </li> <li>通过属性[Color],指定皮肤的基准色 【Color=&quot;254,255,187,3&quot;】表示皮肤的基准色为ARGB(254,255,187,3)。 皮肤文件尺寸不足时,会使用基准色补全。</li> </ul> <h3>3.1 主题色</h3> <p>15种主题色ID_COLOR_DEFAULT1 ~ ID_COLOR_DEFAULT15,通过基准色算出。算法为:</p> <ul> <li> <p>ID_COLOR_DEFAULT1 ~ ID_COLOR_DEFAULT7 透明度不同的基准色,ID_COLOR_DEFAULT1透明度最高。</p> </li> <li> <p>ID_COLOR_DEFAULT8 等同于基准色。</p> </li> <li>ID_COLOR_DEFAULT9 ~ ID_COLOR_DEFAULT15 基准色覆盖透明度不同的黑色,ID_COLOR_DEFAULT9覆盖的黑色透明度最高。</li> </ul>

页面列表

ITEM_HTML