SkinUI入门教程(十二) SkinUI动画、国际化、字体大小和资源发布
来源:互联网 发布:齐鲁域名 编辑:程序博客网 时间:2024/06/07 07:19
- 官方网站:http://www.skinui.cn
- 下载地址:http://pan.baidu.com/s/1slKsMGt
12.1 窗口动画
可以给对话框布局文件的【SkinDialog】节点,加上动画属性【Animation="xxx"】。当对话框打开和关闭时,显示窗口动画。
12.1.1 SizeChange动画
SizeChange动画有一个固定点。默认情况下,固定点在窗口正中心。
固定中心点的SizeChange动画
- 对话框打开时,中心像素点保持不动,其他像素点由中心点向四个角展开,透明度由完全透明到完全不透明;
- 对话框关闭时,中心像素点保持不动,其他像素点由四个角向中心点收拢,透明度由完全不透明到完全透明。
布局文件如下:
<SkinDialog DefaultWidth="400" DefaultHeight="300" SysButton="CLOSE" Animation="SizeChange"></SkinDialog>
固定左上角的SizeChange动画
- 对话框打开时,左上角像素点保持不动,其他像素点由左上角向其他角展开,透明度由完全透明到完全不透明;
- 对话框关闭时,左上角像素点保持不动,其他像素点由其他角向左上角收拢,透明度由完全不透明到完全透明。
布局文件如下:
<SkinDialog DefaultWidth="400" DefaultHeight="300" SysButton="CLOSE" Animation="SizeChange" FixedPoint="0,0"></SkinDialog>
固定右上角的SizeChange动画
- 对话框打开时,右上角像素点保持不动,其他像素点由右上角向其他角展开,透明度由完全透明到完全不透明;
- 对话框关闭时,右上角像素点保持不动,其他像素点由其他角向右上角收拢,透明度由完全不透明到完全透明。
布局文件如下:
<SkinDialog DefaultWidth="400" DefaultHeight="300" SysButton="CLOSE" Animation="SizeChange" FixedPoint="400,0"></SkinDialog>
固定右下角的SizeChange动画
- 对话框打开时,右下角像素点保持不动,其他像素点由右下角向其他角展开,透明度由完全透明到完全不透明;
- 对话框关闭时,右下角像素点保持不动,其他像素点由其他角向右下角收拢,透明度由完全不透明到完全透明。
布局文件如下:
<SkinDialog DefaultWidth="400" DefaultHeight="300" SysButton="CLOSE" Animation="SizeChange"FixedPoint="400,300"></SkinDialog>
固定左下角的SizeChange动画
- 对话框打开时,左下角像素点保持不动,其他像素点由左下角向其他角展开,透明度由完全透明到完全不透明;
- 对话框关闭时,左下角像素点保持不动,其他像素点由其他角向左下角收拢,透明度由完全不透明到完全透明。
布局文件如下:
<SkinDialog DefaultWidth="400" DefaultHeight="300" SysButton="CLOSE" Animation="SizeChange"FixedPoint="0,300"></SkinDialog>
12.1.2 LeftRightExpand动画
LeftRightExpand有一条固定线。默认情况下,固定线为窗口居中垂直线。
固定线为窗口居中垂直线的LeftRightExpand动画
- 对话框打开时,居中垂直线像素点保持不动,其他像素点由居中垂直线向左右展开,透明度由完全透明到完全不透明;
- 对话框关闭时,居中垂直线像素点保持不动,其他像素点由左右向居中垂直线收拢,透明度由完全不透明到完全透明。
布局文件如下:
<SkinDialog DefaultWidth="400" DefaultHeight="300" SysButton="CLOSE" Animation="LeftRightExpand"></SkinDialog>
固定线为左边垂直线的LeftRightExpand动画
- 对话框打开时,左边垂直线像素点保持不动,其他像素点由左边垂直线向右展开,透明度由完全透明到完全不透明;
- 对话框关闭时,左边垂直线像素点保持不动,其他像素点由右向左边垂直线收拢,透明度由完全不透明到完全透明。
布局文件如下:
<SkinDialog DefaultWidth="400" DefaultHeight="300" SysButton="CLOSE" Animation="LeftRightExpand" FixedPoint="0,0"></SkinDialog>
固定线为右边垂直线的LeftRightExpand动画
- 对话框打开时,左边垂直线像素点保持不动,其他像素点由左边垂直线向右展开,透明度由完全透明到完全不透明;
- 对话框关闭时,左边垂直线像素点保持不动,其他像素点由右向左边垂直线收拢,透明度由完全不透明到完全透明。
布局文件如下:
<SkinDialog DefaultWidth="400" DefaultHeight="300" SysButton="CLOSE" Animation="LeftRightExpand" FixedPoint="400,300"></SkinDialog>
12.1.3 TopBottomExpand动画
TopBottomExpand有一条固定线。默认情况下,固定线为窗口居中垂直线。
固定线为窗口居中水平线的TopBottomExpand动画
- 对话框打开时,居中水平线像素点保持不动,其他像素点由居中水平线向上下展开,透明度由完全透明到完全不透明;
- 对话框关闭时,居中水平线像素点保持不动,其他像素点由上下向居中水平线收拢,透明度由完全不透明到完全透明。
布局文件如下:
<SkinDialog DefaultWidth="400" DefaultHeight="300" SysButton="CLOSE" Animation="TopBottomExpand"></SkinDialog>
固定线为上边水平线的TopBottomExpand动画
- 对话框打开时,上边水平线像素点保持不动,其他像素点由上边水平线向下展开,透明度由完全透明到完全不透明;
- 对话框关闭时,上边水平线像素点保持不动,其他像素点由下向上边水平线收拢,透明度由完全不透明到完全透明。
布局文件如下:
<SkinDialog DefaultWidth="400" DefaultHeight="300" SysButton="CLOSE" Animation="TopBottomExpand" FixedPoint="0,0"></SkinDialog>
固定线为下边水平线的TopBottomExpand动画
- 对话框打开时,下边水平线像素点保持不动,其他像素点由下边水平线向上展开,透明度由完全透明到完全不透明;
- 对话框关闭时,下边水平线像素点保持不动,其他像素点由上向下边水平线收拢,透明度由完全不透明到完全透明。
布局文件如下:
<SkinDialog DefaultWidth="400" DefaultHeight="300" SysButton="CLOSE" Animation="TopBottomExpand" FixedPoint="400,300"></SkinDialog>
12.2 切换动画
可以给布局文件的【SwitchAnimationHost】节点,加上动画属性【Animation="xxx"】。
SkinUI内置以下两种切换动画:
- LeftRightSlide动画。切换时,内容左右滑动
- TopBottomSlide动画。切换时,内容上下滑动
当需要切换子组件时,SkinUI调用类【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>
以上的代码,当选中SkinRadioButton时,会以动画的方式显示属性BindView绑定的SkinRelativeLayout。
12.3 侧边栏动画
类【CSlideAnimationHost】提供侧边栏动画的能力。
当需要显示侧边栏时,SkinUI调用类【CSlideAnimationHost】的以下接口:
- C++接口
void Show();
当需要隐藏侧边栏时,SkinUI调用类【CSlideAnimationHost】的以下接口:
- C++接口
void Close();
12.4 部分隐藏动画
类【CHideAnimationHost】提供侧边栏动画的能力。
SkinUI内置以下两种切换动画:
- LeftRightHide动画。隐藏时,内容左右滑动
- TopBottomHide动画。隐藏时,内容上下滑动
当需要显示隐藏的部分时,调用类【CHideAnimationHost】的以下接口:
- C++接口
void ShowView(LONG nId);void ShowView(CSkinView* pView);
当需要隐藏需要隐藏的部分时,调用类【CHideAnimationHost】的以下接口:
- C++接口
void HideView(LONG nId);void HideView(CSkinView* pView);
13 国际化
SkinUI默认加载资源目录【string】下文件夹【2052】下面的字符串。
- 获得当前字符串语言
tstring strLanguage = _T("2052");SkinUI::GetAppConfig(APP_CONFIG_STRING_LANGUAGE, strLanguage);
在程序运行过程中,执行下面的代码,可以变更程序加载的字符串资源,重启程序后生效。
设置加载资源目录【string】下文件夹【2052】下面的简体中文字符串
SkinUI::SetAppConfig(APP_CONFIG_STRING_LANGUAGE, _T("2052"));
设置加载资源目录【string】下文件夹【1033】下面的英文字符串
SkinUI::SetAppConfig(APP_CONFIG_STRING_LANGUAGE, _T("1033"));
设置加载资源目录【string】下文件夹【1028】下面的繁体中文字符串
SkinUI::SetAppConfig(APP_CONFIG_STRING_LANGUAGE, _T("1028"));
14 文字大小
SkinUI可以将文字整体变大或变小,默认使用正常大小的文字。
- 获得当前文字大小变更
LONG nFontSize = 0;SkinUI::GetAppConfig(APP_CONFIG_FONT_SIZE_CHANGE, nFontSize);
在程序运行过程中,执行下面的代码,可以将文字整体变大或变小,不需要重启程序即可生效。
将字体整体变大两个字号
SkinUI::ChangeFontSize(2);
将字体整体变小两个字号
SkinUI::ChangeFontSize(-2);
15 资源发布
开发者需要在【InitInstance】时设置资源发布类型。
15.1发布资源文件
直接将res目录原样放在安装包。发布时,需要再带完整的【res】目录。
调用以下方法,将资源发布类型设置为【发布资源文件】:
BOOL CApp::InitInstance(ResType& resType){ resType = RT_FILE; return TRUE;}
优点:
- 更新版本时,只需更新变化的资源,不需要更新整个资源目录;
缺点:
- 可以随意获得和修改资源文件;
15.2 发布资源文件包
将res目录下的文件夹打包成【xxx.res】文件。发布时,只需携带【xxx.res】即可,不需要再带完整的【res】目录。
调用以下方法,将资源发布类型设置为【发布资源文件包】:
BOOL CApp::InitInstance(ResType& resType){ resType = RT_FILE_PACKAGE; return TRUE;}
优点:
- 资源文件加密,无法随意获得和修改资源文件;
缺点:
- 更新版本时,需要更新整个资源目录;
15.3发布RC资源文件包
将res目录下的文件夹打包成【xxx.res】文件,然后以资源文件的方式,打包到exe文件中。发布时,资源文件已经包含在exe文件,不需要带任何资源文件。
调用以下方法,将资源发布类型设置为【发布RC资源文件包】:
BOOL CApp::InitInstance(ResType& resType){ resType = RT_RC_PACKAGE; return TRUE;}
优点:
- 资源文件加密,无法随意获得和修改资源文件;
- 只需一个exe文件即可运行,在某些情况下非常有用。
缺点:
- 更新版本时,需要更新整个资源和exe文件;
- SkinUI入门教程(十二) SkinUI动画、国际化、字体大小和资源发布
- SkinUI入门教程(三) SkinUI视图组件和界面编程
- SkinUI入门教程(十) SkinUI自定义控件和常用组件
- SkinUI入门教程(十一) SkinUI消息映射和消息处理
- SkinUI入门教程(一) SkinUI的发展历史和开发环境
- SkinUI入门教程(二) SkinUI应用程序的基本结构
- SkinUI入门教程(五) 第二组UI组件:文本、超链、线条和图片框
- SkinUI入门教程(六) 第三组UI组件:按钮、单选框和复选框
- SkinUI入门教程(七) 第四组UI组件:进度条、分割条、滚动条和滑块
- SkinUI入门教程(八) 第五组UI组件:滚动视图、编辑框和下拉列表框
- SkinUI入门教程(九) 第六组UI组件:列表、树、网格和浏览器
- SkinUI入门教程(四) 第一组UI组件:布局管理器
- 【SkinUI实例】仿QQ界面设计第三十二课
- SkinUI 更新历史
- 【SkinUI实例】仿QQ界面设计第三十课
- 重构SkinUI代码更新啦!
- 【SkinUI实例】仿QQ界面设计第二十八课
- 【SkinUI实例】仿QQ界面设计第二十九课
- SkinUI入门教程(八) 第五组UI组件:滚动视图、编辑框和下拉列表框
- 大数据可破"猪周期"难题?“二师兄”还能这么养!
- SkinUI入门教程(九) 第六组UI组件:列表、树、网格和浏览器
- SkinUI入门教程(十) SkinUI自定义控件和常用组件
- SkinUI入门教程(十一) SkinUI消息映射和消息处理
- SkinUI入门教程(十二) SkinUI动画、国际化、字体大小和资源发布
- 【POCO】POCO学习总结(一)--下载与编译
- app 支付宝支付接入
- Leetcode问题解答:215. Kth Largest Element in an Array
- 记忆化深搜模板
- 计算年终奖陷阱区间java代码
- C++中模板为什么不支持分离编译
- 关于dup2重定向STDOUT_FILENO之后的文件缓冲问题
- 一起来学SpringCloud之