SkinUI入门教程

SkinUI入门教程


6.4 部分隐藏动画

<p>类【CHideAnimationHost】提供部分隐藏动画的能力。</p> <p>SkinUI内置以下两种切换动画:</p> <ul> <li>LeftRightHide动画,隐藏时,内容左右滑动;</li> <li>TopBottomHide动画,隐藏时,内容上下滑动。</li> </ul> <h2>相关方法</h2> <p>当需要显示隐藏的部分时,调用类【CHideAnimationHost】的以下接口:</p> <pre><code class="language-c">void ShowView(LONG nId); void ShowView(CSkinView* pView);</code></pre> <p>当需要隐藏需要隐藏的部分时,调用类【CHideAnimationHost】的以下接口:</p> <pre><code class="language-c">void HideView(LONG nId); void HideView(CSkinView* pView);</code></pre> <h2>请看下面的示例</h2> <h3>1 LeftRightHide动画</h3> <h4>效果图</h4> <p><img src="http://www.skinui.cn/doc/img/6/7/1.png" alt="LeftRightHide动画1" /> <img src="http://www.skinui.cn/doc/img/6/7/2.png" alt="LeftRightHide动画2" /></p> <h4>布局文件</h4> <pre><code class="language-xml">&amp;lt;SkinDialog DefaultWidth=&amp;quot;400&amp;quot; DefaultHeight=&amp;quot;300&amp;quot; SysButton=&amp;quot;CLOSE&amp;quot; Icon=&amp;quot;128&amp;quot; Caption=&amp;quot;IDS_HIDE_ANIMATION1&amp;quot; Animation=&amp;quot;SizeChange&amp;quot;&amp;gt; &amp;lt;SkinButton Id=&amp;quot;1000&amp;quot; LayoutWidth=&amp;quot;125&amp;quot; LayoutHeight=&amp;quot;30&amp;quot; ChildText1=&amp;quot;IDS_CLICK_ME&amp;quot; Image=&amp;quot;Button.png&amp;quot; Layout=&amp;quot;Button.xml&amp;quot; AlignParentRight=&amp;quot;10&amp;quot; AlignParentVerticalCenter=&amp;quot;0&amp;quot; PressDownOffset=&amp;quot;1&amp;quot;/&amp;gt; &amp;lt;HideAnimationHost Id=&amp;quot;2000&amp;quot; AlignParentLeft=&amp;quot;30&amp;quot; AlignParentRight=&amp;quot;150&amp;quot; AlignParentTop=&amp;quot;40&amp;quot; AlignParentBottom=&amp;quot;10&amp;quot; Animation=&amp;quot;LeftRightHide&amp;quot;&amp;gt; &amp;lt;SkinRelativeLayout Id=&amp;quot;2010&amp;quot; LayoutHeight=&amp;quot;FillParent&amp;quot; AlignParentLeft=&amp;quot;10&amp;quot; AlignParentRight=&amp;quot;100&amp;quot; Color=&amp;quot;ID_COLOR_RED&amp;quot;&amp;gt; &amp;lt;/SkinRelativeLayout&amp;gt; &amp;lt;SkinRelativeLayout Id=&amp;quot;2020&amp;quot; LayoutHeight=&amp;quot;FillParent&amp;quot; LayoutWidth=&amp;quot;100&amp;quot; AlignParentRight=&amp;quot;0&amp;quot; Color=&amp;quot;ID_COLOR_GREEN&amp;quot; Visible=&amp;quot;false&amp;quot;&amp;gt; &amp;lt;/SkinRelativeLayout&amp;gt; &amp;lt;/HideAnimationHost&amp;gt; &amp;lt;/SkinDialog&amp;gt;</code></pre> <h3>2 TopBottomHide动画</h3> <h4>效果图</h4> <p><img src="http://www.skinui.cn/doc/img/6/8/1.png" alt="TopBottomHide动画1" /> <img src="http://www.skinui.cn/doc/img/6/8/2.png" alt="TopBottomHide动画2" /></p> <h4>布局文件</h4> <pre><code class="language-xml">&amp;lt;SkinDialog DefaultWidth=&amp;quot;400&amp;quot; DefaultHeight=&amp;quot;300&amp;quot; SysButton=&amp;quot;CLOSE&amp;quot; Icon=&amp;quot;128&amp;quot; Caption=&amp;quot;IDS_HIDE_ANIMATION2&amp;quot; Animation=&amp;quot;SizeChange&amp;quot;&amp;gt; &amp;lt;SkinButton Id=&amp;quot;1000&amp;quot; LayoutWidth=&amp;quot;125&amp;quot; LayoutHeight=&amp;quot;30&amp;quot; ChildText1=&amp;quot;IDS_CLICK_ME&amp;quot; Image=&amp;quot;Button.png&amp;quot; Layout=&amp;quot;Button.xml&amp;quot; AlignParentBottom=&amp;quot;10&amp;quot; AlignParentHorizontalCenter=&amp;quot;0&amp;quot; PressDownOffset=&amp;quot;1&amp;quot;/&amp;gt; &amp;lt;HideAnimationHost Id=&amp;quot;2000&amp;quot; AlignParentLeft=&amp;quot;10&amp;quot; AlignParentRight=&amp;quot;10&amp;quot; AlignParentTop=&amp;quot;40&amp;quot; AlignParentBottom=&amp;quot;50&amp;quot; Animation=&amp;quot;TopBottomHide&amp;quot;&amp;gt; &amp;lt;SkinRelativeLayout Id=&amp;quot;2010&amp;quot; LayoutWidth=&amp;quot;FillParent&amp;quot; AlignParentTop=&amp;quot;0&amp;quot; AlignParentBottom=&amp;quot;100&amp;quot; Color=&amp;quot;ID_COLOR_RED&amp;quot;&amp;gt; &amp;lt;/SkinRelativeLayout&amp;gt; &amp;lt;SkinRelativeLayout Id=&amp;quot;2020&amp;quot; LayoutWidth=&amp;quot;FillParent&amp;quot; LayoutHeight=&amp;quot;100&amp;quot; AlignParentBottom=&amp;quot;0&amp;quot; Color=&amp;quot;ID_COLOR_GREEN&amp;quot; Visible=&amp;quot;false&amp;quot;&amp;gt; &amp;lt;/SkinRelativeLayout&amp;gt; &amp;lt;/HideAnimationHost&amp;gt; &amp;lt;/SkinDialog&amp;gt;</code></pre> <h4>h文件</h4> <pre><code class="language-c">#pragma once class CHideAnimationDialog : public CSkinDialog { public: enum { IDC_BUTTON_TEST = 1000, IDC_HOST = 2000, IDC_HIDE_VIEW = 2020, }; public: CHideAnimationDialog(const tstring&amp;amp; strXml); public: virtual void OnInitDialog(); protected: void OnBtnClickedTest(UINT uNotifyCode, int nID, CSkinView* pView); SKINUI_DECLARE_MESSAGE_MAP() };</code></pre> <h4>cpp文件</h4> <pre><code class="language-c">#include &amp;quot;stdafx.h&amp;quot; #include &amp;quot;HideAnimationDialog.h&amp;quot; SKINUI_BEGIN_MESSAGE_MAP(CHideAnimationDialog, CSkinDialog) ON_SKINUI_COMMAND(IDC_BUTTON_TEST, OnBtnClickedTest) SKINUI_END_MESSAGE_MAP() CHideAnimationDialog::CHideAnimationDialog(const tstring&amp;amp; strXml) : CSkinDialog(strXml) { } void CHideAnimationDialog::OnInitDialog() { CSkinDialog::OnInitDialog(); } void CHideAnimationDialog::OnBtnClickedTest(UINT uNotifyCode, int nID, CSkinView* pView) { CHideAnimationHost* pAnimationHost = static_cast&amp;lt;CHideAnimationHost*&amp;gt;(GetChildById(IDC_HOST)); CSkinView* pSkinView = GetChildById(IDC_HIDE_VIEW); if(pAnimationHost &amp;amp;&amp;amp; pSkinView) { if(pSkinView-&amp;gt;IsVisible()) { pAnimationHost-&amp;gt;HideView(pSkinView); } else { pAnimationHost-&amp;gt;ShowView(pSkinView); } } }</code></pre>

页面列表

ITEM_HTML