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">&lt;SkinDialog DefaultWidth=&quot;400&quot; DefaultHeight=&quot;300&quot; SysButton=&quot;CLOSE&quot; Icon=&quot;128&quot; Caption=&quot;IDS_HIDE_ANIMATION1&quot; Animation=&quot;SizeChange&quot;&gt;
&lt;SkinButton Id=&quot;1000&quot; LayoutWidth=&quot;125&quot; LayoutHeight=&quot;30&quot; ChildText1=&quot;IDS_CLICK_ME&quot; Image=&quot;Button.png&quot; Layout=&quot;Button.xml&quot; AlignParentRight=&quot;10&quot; AlignParentVerticalCenter=&quot;0&quot; PressDownOffset=&quot;1&quot;/&gt;
&lt;HideAnimationHost Id=&quot;2000&quot; AlignParentLeft=&quot;30&quot; AlignParentRight=&quot;150&quot; AlignParentTop=&quot;40&quot; AlignParentBottom=&quot;10&quot; Animation=&quot;LeftRightHide&quot;&gt;
&lt;SkinRelativeLayout Id=&quot;2010&quot; LayoutHeight=&quot;FillParent&quot; AlignParentLeft=&quot;10&quot; AlignParentRight=&quot;100&quot; Color=&quot;ID_COLOR_RED&quot;&gt;
&lt;/SkinRelativeLayout&gt;
&lt;SkinRelativeLayout Id=&quot;2020&quot; LayoutHeight=&quot;FillParent&quot; LayoutWidth=&quot;100&quot; AlignParentRight=&quot;0&quot; Color=&quot;ID_COLOR_GREEN&quot; Visible=&quot;false&quot;&gt;
&lt;/SkinRelativeLayout&gt;
&lt;/HideAnimationHost&gt;
&lt;/SkinDialog&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">&lt;SkinDialog DefaultWidth=&quot;400&quot; DefaultHeight=&quot;300&quot; SysButton=&quot;CLOSE&quot; Icon=&quot;128&quot; Caption=&quot;IDS_HIDE_ANIMATION2&quot; Animation=&quot;SizeChange&quot;&gt;
&lt;SkinButton Id=&quot;1000&quot; LayoutWidth=&quot;125&quot; LayoutHeight=&quot;30&quot; ChildText1=&quot;IDS_CLICK_ME&quot; Image=&quot;Button.png&quot; Layout=&quot;Button.xml&quot; AlignParentBottom=&quot;10&quot; AlignParentHorizontalCenter=&quot;0&quot; PressDownOffset=&quot;1&quot;/&gt;
&lt;HideAnimationHost Id=&quot;2000&quot; AlignParentLeft=&quot;10&quot; AlignParentRight=&quot;10&quot; AlignParentTop=&quot;40&quot; AlignParentBottom=&quot;50&quot; Animation=&quot;TopBottomHide&quot;&gt;
&lt;SkinRelativeLayout Id=&quot;2010&quot; LayoutWidth=&quot;FillParent&quot; AlignParentTop=&quot;0&quot; AlignParentBottom=&quot;100&quot; Color=&quot;ID_COLOR_RED&quot;&gt;
&lt;/SkinRelativeLayout&gt;
&lt;SkinRelativeLayout Id=&quot;2020&quot; LayoutWidth=&quot;FillParent&quot; LayoutHeight=&quot;100&quot; AlignParentBottom=&quot;0&quot; Color=&quot;ID_COLOR_GREEN&quot; Visible=&quot;false&quot;&gt;
&lt;/SkinRelativeLayout&gt;
&lt;/HideAnimationHost&gt;
&lt;/SkinDialog&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; 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 &quot;stdafx.h&quot;
#include &quot;HideAnimationDialog.h&quot;
SKINUI_BEGIN_MESSAGE_MAP(CHideAnimationDialog, CSkinDialog)
ON_SKINUI_COMMAND(IDC_BUTTON_TEST, OnBtnClickedTest)
SKINUI_END_MESSAGE_MAP()
CHideAnimationDialog::CHideAnimationDialog(const tstring&amp; strXml)
: CSkinDialog(strXml)
{
}
void CHideAnimationDialog::OnInitDialog()
{
CSkinDialog::OnInitDialog();
}
void CHideAnimationDialog::OnBtnClickedTest(UINT uNotifyCode, int nID, CSkinView* pView)
{
CHideAnimationHost* pAnimationHost = static_cast&lt;CHideAnimationHost*&gt;(GetChildById(IDC_HOST));
CSkinView* pSkinView = GetChildById(IDC_HIDE_VIEW);
if(pAnimationHost &amp;&amp; pSkinView)
{
if(pSkinView-&gt;IsVisible())
{
pAnimationHost-&gt;HideView(pSkinView);
}
else
{
pAnimationHost-&gt;ShowView(pSkinView);
}
}
}</code></pre>