- 官方網(wǎng)站:http://www.skinui.cn
- 下載地址:http://pan.baidu.com/s/1slKsMGt
12.1 窗口動畫
可以給對話框布局文件的【SkinDialog】節(jié)點芝囤,加上動畫屬性【Animation="xxx"】。當(dāng)對話框打開和關(guān)閉時辛萍,顯示窗口動畫悯姊。
12.1.1 SizeChange動畫
SizeChange動畫有一個固定點。默認情況下贩毕,固定點在窗口正中心悯许。
固定中心點的SizeChange動畫
- 對話框打開時,中心像素點保持不動辉阶,其他像素點由中心點向四個角展開先壕,透明度由完全透明到完全不透明;
- 對話框關(guān)閉時谆甜,中心像素點保持不動垃僚,其他像素點由四個角向中心點收攏,透明度由完全不透明到完全透明规辱。
布局文件如下:
<SkinDialog DefaultWidth="400" DefaultHeight="300" SysButton="CLOSE" Animation="SizeChange">
</SkinDialog>
固定左上角的SizeChange動畫
- 對話框打開時谆棺,左上角像素點保持不動,其他像素點由左上角向其他角展開罕袋,透明度由完全透明到完全不透明改淑;
- 對話框關(guān)閉時,左上角像素點保持不動浴讯,其他像素點由其他角向左上角收攏朵夏,透明度由完全不透明到完全透明。
布局文件如下:
<SkinDialog DefaultWidth="400" DefaultHeight="300" SysButton="CLOSE" Animation="SizeChange" FixedPoint="0,0">
</SkinDialog>
固定右上角的SizeChange動畫
- 對話框打開時榆纽,右上角像素點保持不動侍郭,其他像素點由右上角向其他角展開询吴,透明度由完全透明到完全不透明;
- 對話框關(guān)閉時亮元,右上角像素點保持不動,其他像素點由其他角向右上角收攏唠摹,透明度由完全不透明到完全透明爆捞。
布局文件如下:
<SkinDialog DefaultWidth="400" DefaultHeight="300" SysButton="CLOSE" Animation="SizeChange" FixedPoint="400,0">
</SkinDialog>
固定右下角的SizeChange動畫
- 對話框打開時,右下角像素點保持不動勾拉,其他像素點由右下角向其他角展開煮甥,透明度由完全透明到完全不透明;
- 對話框關(guān)閉時藕赞,右下角像素點保持不動成肘,其他像素點由其他角向右下角收攏,透明度由完全不透明到完全透明斧蜕。
布局文件如下:
<SkinDialog DefaultWidth="400" DefaultHeight="300" SysButton="CLOSE" Animation="SizeChange"FixedPoint="400,300">
</SkinDialog>
固定左下角的SizeChange動畫
- 對話框打開時双霍,左下角像素點保持不動,其他像素點由左下角向其他角展開批销,透明度由完全透明到完全不透明洒闸;
- 對話框關(guān)閉時,左下角像素點保持不動均芽,其他像素點由其他角向左下角收攏丘逸,透明度由完全不透明到完全透明菇绵。
布局文件如下:
<SkinDialog DefaultWidth="400" DefaultHeight="300" SysButton="CLOSE" Animation="SizeChange"FixedPoint="0,300">
</SkinDialog>
12.1.2 LeftRightExpand動畫
LeftRightExpand有一條固定線哥纫。默認情況下,固定線為窗口居中垂直線霞丧。
固定線為窗口居中垂直線的LeftRightExpand動畫
- 對話框打開時劲妙,居中垂直線像素點保持不動湃鹊,其他像素點由居中垂直線向左右展開,透明度由完全透明到完全不透明是趴;
- 對話框關(guān)閉時涛舍,居中垂直線像素點保持不動,其他像素點由左右向居中垂直線收攏唆途,透明度由完全不透明到完全透明富雅。
布局文件如下:
<SkinDialog DefaultWidth="400" DefaultHeight="300" SysButton="CLOSE" Animation="LeftRightExpand">
</SkinDialog>
固定線為左邊垂直線的LeftRightExpand動畫
- 對話框打開時,左邊垂直線像素點保持不動肛搬,其他像素點由左邊垂直線向右展開没佑,透明度由完全透明到完全不透明;
- 對話框關(guān)閉時温赔,左邊垂直線像素點保持不動蛤奢,其他像素點由右向左邊垂直線收攏,透明度由完全不透明到完全透明。
布局文件如下:
<SkinDialog DefaultWidth="400" DefaultHeight="300" SysButton="CLOSE" Animation="LeftRightExpand" FixedPoint="0,0">
</SkinDialog>
固定線為右邊垂直線的LeftRightExpand動畫
- 對話框打開時啤贩,左邊垂直線像素點保持不動待秃,其他像素點由左邊垂直線向右展開,透明度由完全透明到完全不透明痹屹;
- 對話框關(guān)閉時章郁,左邊垂直線像素點保持不動,其他像素點由右向左邊垂直線收攏志衍,透明度由完全不透明到完全透明暖庄。
布局文件如下:
<SkinDialog DefaultWidth="400" DefaultHeight="300" SysButton="CLOSE" Animation="LeftRightExpand" FixedPoint="400,300">
</SkinDialog>
12.1.3 TopBottomExpand動畫
TopBottomExpand有一條固定線。默認情況下楼肪,固定線為窗口居中垂直線培廓。
固定線為窗口居中水平線的TopBottomExpand動畫
- 對話框打開時,居中水平線像素點保持不動春叫,其他像素點由居中水平線向上下展開肩钠,透明度由完全透明到完全不透明;
- 對話框關(guān)閉時象缀,居中水平線像素點保持不動蔬将,其他像素點由上下向居中水平線收攏,透明度由完全不透明到完全透明央星。
布局文件如下:
<SkinDialog DefaultWidth="400" DefaultHeight="300" SysButton="CLOSE" Animation="TopBottomExpand">
</SkinDialog>
固定線為上邊水平線的TopBottomExpand動畫
- 對話框打開時霞怀,上邊水平線像素點保持不動,其他像素點由上邊水平線向下展開莉给,透明度由完全透明到完全不透明毙石;
- 對話框關(guān)閉時,上邊水平線像素點保持不動颓遏,其他像素點由下向上邊水平線收攏徐矩,透明度由完全不透明到完全透明。
布局文件如下:
<SkinDialog DefaultWidth="400" DefaultHeight="300" SysButton="CLOSE" Animation="TopBottomExpand" FixedPoint="0,0">
</SkinDialog>
固定線為下邊水平線的TopBottomExpand動畫
- 對話框打開時叁幢,下邊水平線像素點保持不動滤灯,其他像素點由下邊水平線向上展開,透明度由完全透明到完全不透明曼玩;
- 對話框關(guān)閉時鳞骤,下邊水平線像素點保持不動,其他像素點由上向下邊水平線收攏黍判,透明度由完全不透明到完全透明豫尽。
布局文件如下:
<SkinDialog DefaultWidth="400" DefaultHeight="300" SysButton="CLOSE" Animation="TopBottomExpand" FixedPoint="400,300">
</SkinDialog>
12.2 切換動畫
可以給布局文件的【SwitchAnimationHost】節(jié)點,加上動畫屬性【Animation="xxx"】顷帖。
SkinUI內(nèi)置以下兩種切換動畫:
- LeftRightSlide動畫美旧。切換時渤滞,內(nèi)容左右滑動
- TopBottomSlide動畫。切換時榴嗅,內(nèi)容上下滑動
當(dāng)需要切換子組件時妄呕,SkinUI調(diào)用類【CSwitchAnimationHost】的以下接口:
- C++接口
void ShowView(LONG nId);
void ShowView(CSkinView* pView);
- 通常情況下,切換動畫搭配【SkinAnimationGroup】使用录肯,請看下面的示例:
<SkinDialog DefaultWidth="400" DefaultHeight="300" SysButton="CLOSE" Icon="128" Caption="IDS_SWITCH_ANIMATION1" Animation="SizeChange" ThemeHeight="65">
<SkinAnimationGroup Id="100" LayoutWidth="210" LayoutHeight="30" AlignParentLeft="0" AlignParentTop="35">
<SkinRelativeLayout LayoutWidth="FillParent" LayoutHeight="FillParent">
<SkinRadioButton Id="101" LayoutWidth="100" LayoutHeight="FillParent" ChildText1="TabButton1" Image="TabButton.png" Layout="TabButton.xml" BindView="1100" AlignParentLeft="0" Checked="true"/>
<SkinRadioButton Id="102" LayoutWidth="100" LayoutHeight="FillParent" ChildText1="TabButton2" Image="TabButton.png" Layout="TabButton.xml" BindView="1200" AlignParentLeft="100" Radius="5"/>
</SkinRelativeLayout>
</SkinAnimationGroup>
<SwitchAnimationHost Id="1000" AlignParentLeft="15" ToBottomOf="100,5" AlignParentRight="15" AlignParentBottom="15" Animation="LeftRightSlide">
<SkinRelativeLayout Id="1100" LayoutWidth="FillParent" LayoutHeight="FillParent">
</SkinRelativeLayout>
<SkinRelativeLayout Id="1200" LayoutWidth="FillParent" LayoutHeight="FillParent" Visible="false">
</SkinRelativeLayout>
</SwitchAnimationHost>
</SkinDialog>
以上的代碼趴腋,當(dāng)選中SkinRadioButton時,會以動畫的方式顯示屬性BindView綁定的SkinRelativeLayout论咏。
12.3 側(cè)邊欄動畫
類【CSlideAnimationHost】提供側(cè)邊欄動畫的能力。
當(dāng)需要顯示側(cè)邊欄時颁井,SkinUI調(diào)用類【CSlideAnimationHost】的以下接口:
- C++接口
void Show();
當(dāng)需要隱藏側(cè)邊欄時厅贪,SkinUI調(diào)用類【CSlideAnimationHost】的以下接口:
- C++接口
void Close();
12.4 部分隱藏動畫
類【CHideAnimationHost】提供側(cè)邊欄動畫的能力。
SkinUI內(nèi)置以下兩種切換動畫:
- LeftRightHide動畫雅宾。隱藏時养涮,內(nèi)容左右滑動
- TopBottomHide動畫。隱藏時眉抬,內(nèi)容上下滑動
當(dāng)需要顯示隱藏的部分時贯吓,調(diào)用類【CHideAnimationHost】的以下接口:
- C++接口
void ShowView(LONG nId);
void ShowView(CSkinView* pView);
當(dāng)需要隱藏需要隱藏的部分時,調(diào)用類【CHideAnimationHost】的以下接口:
- C++接口
void HideView(LONG nId);
void HideView(CSkinView* pView);
13 國際化
SkinUI默認加載資源目錄【string】下文件夾【2052】下面的字符串蜀变。
- 獲得當(dāng)前字符串語言
tstring strLanguage = _T("2052");
SkinUI::GetAppConfig(APP_CONFIG_STRING_LANGUAGE, strLanguage);
在程序運行過程中悄谐,執(zhí)行下面的代碼,可以變更程序加載的字符串資源库北,重啟程序后生效爬舰。
- 設(shè)置加載資源目錄【string】下文件夾【2052】下面的簡體中文字符串
SkinUI::SetAppConfig(APP_CONFIG_STRING_LANGUAGE, _T("2052"));
- 設(shè)置加載資源目錄【string】下文件夾【1033】下面的英文字符串
SkinUI::SetAppConfig(APP_CONFIG_STRING_LANGUAGE, _T("1033"));
- 設(shè)置加載資源目錄【string】下文件夾【1028】下面的繁體中文字符串
SkinUI::SetAppConfig(APP_CONFIG_STRING_LANGUAGE, _T("1028"));
14 文字大小
SkinUI可以將文字整體變大或變小,默認使用正常大小的文字寒瓦。
- 獲得當(dāng)前文字大小變更
LONG nFontSize = 0;
SkinUI::GetAppConfig(APP_CONFIG_FONT_SIZE_CHANGE, nFontSize);
在程序運行過程中情屹,執(zhí)行下面的代碼,可以將文字整體變大或變小杂腰,不需要重啟程序即可生效垃你。
- 將字體整體變大兩個字號
SkinUI::ChangeFontSize(2);
- 將字體整體變小兩個字號
SkinUI::ChangeFontSize(-2);
15 資源發(fā)布
開發(fā)者需要在【InitInstance】時設(shè)置資源發(fā)布類型。
15.1發(fā)布資源文件
直接將res目錄原樣放在安裝包喂很。發(fā)布時惜颇,需要再帶完整的【res】目錄。
調(diào)用以下方法恤筛,將資源發(fā)布類型設(shè)置為【發(fā)布資源文件】:
BOOL CApp::InitInstance(ResType& resType)
{
resType = RT_FILE;
return TRUE;
}
優(yōu)點:
- 更新版本時官还,只需更新變化的資源,不需要更新整個資源目錄毒坛;
缺點:
- 可以隨意獲得和修改資源文件望伦;
15.2 發(fā)布資源文件包
將res目錄下的文件夾打包成【xxx.res】文件林说。發(fā)布時,只需攜帶【xxx.res】即可屯伞,不需要再帶完整的【res】目錄腿箩。
調(diào)用以下方法,將資源發(fā)布類型設(shè)置為【發(fā)布資源文件包】:
BOOL CApp::InitInstance(ResType& resType)
{
resType = RT_FILE_PACKAGE;
return TRUE;
}
優(yōu)點:
- 資源文件加密劣摇,無法隨意獲得和修改資源文件珠移;
缺點:
- 更新版本時,需要更新整個資源目錄末融;
15.3發(fā)布RC資源文件包
將res目錄下的文件夾打包成【xxx.res】文件钧惧,然后以資源文件的方式,打包到exe文件中勾习。發(fā)布時浓瞪,資源文件已經(jīng)包含在exe文件,不需要帶任何資源文件巧婶。
調(diào)用以下方法乾颁,將資源發(fā)布類型設(shè)置為【發(fā)布RC資源文件包】:
BOOL CApp::InitInstance(ResType& resType)
{
resType = RT_RC_PACKAGE;
return TRUE;
}
優(yōu)點:
- 資源文件加密,無法隨意獲得和修改資源文件艺栈;
- 只需一個exe文件即可運行英岭,在某些情況下非常有用。
缺點:
- 更新版本時湿右,需要更新整個資源和exe文件诅妹;