12 SkinUI動畫给猾、國際化、字體大小和資源發(fā)布

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è)邊欄動畫的能力。

側(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)容上下滑動
部分隱藏動畫 LeftRightHide
部分隱藏動畫 TopBottomHide

當(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文件诅妹;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市诅需,隨后出現(xiàn)的幾起案子漾唉,更是在濱河造成了極大的恐慌,老刑警劉巖堰塌,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赵刑,死亡現(xiàn)場離奇詭異,居然都是意外死亡场刑,警方通過查閱死者的電腦和手機般此,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來牵现,“玉大人铐懊,你說我怎么就攤上這事∠固郏” “怎么了科乎?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長贼急。 經(jīng)常有香客問我茅茂,道長捏萍,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任空闲,我火速辦了婚禮令杈,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘碴倾。我一直安慰自己逗噩,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布跌榔。 她就那樣靜靜地躺著异雁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪僧须。 梳的紋絲不亂的頭發(fā)上片迅,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天,我揣著相機與錄音皆辽,去河邊找鬼。 笑死芥挣,一個胖子當(dāng)著我的面吹牛驱闷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播空免,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼空另,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蹋砚?” 一聲冷哼從身側(cè)響起扼菠,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎坝咐,沒想到半個月后循榆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡墨坚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年秧饮,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泽篮。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡盗尸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出帽撑,到底是詐尸還是另有隱情泼各,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布亏拉,位于F島的核電站扣蜻,受9級特大地震影響逆巍,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜弱贼,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一蒸苇、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧吮旅,春花似錦溪烤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至责嚷,卻和暖如春鸳兽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背罕拂。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工揍异, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人爆班。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓衷掷,卻偏偏與公主長得像,于是被迫代替她去往敵國和親柿菩。 傳聞我的和親對象是個殘疾皇子戚嗅,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內(nèi)容