如何在Firemonkey中像iOS一样滑动控件?

时间:2012-02-10 02:09:32

标签: delphi delphi-xe2 firemonkey

我在表单中有一个控件。当事件发生时,它会在其上显示另一个控件,然后它会消失并显示第一个控件。

我希望有一个像iOS中常见的平滑“滑入/滑出”动画,而不是出现/消失。

我看到firemonkey有一些动画组件,但不知道如何使用它们。

3 个答案:

答案 0 :(得分:5)

绝对!

http://docwiki.embarcadero.com/RADStudio/en/FireMonkey_Image_Effects

尽管有名称,这些效果也适用于控件,而不仅仅是位图。 另请查看提供的示例项目(shadereffects)

答案 1 :(得分:4)

查看TFMXObject.AnimateXXX函数:http://docwiki.embarcadero.com/Libraries/en/FMX.Types.TFmxObject_Functions(TFMXObject是所有FireMonkey控件的父级,因此您可以将这些函数用于任何控件)。

使用AnimateFloat的一些示例:

Panel1.AnimateFloat('Left', -Panel1.Width);
ListBox1.AnimatFloat('Height', 0, 0.5, TAnimationType.atOut, TInterpolationType.itBounce);
Edit1.AnimatFloat('Opacity', 0, 1);

AnimateFloat为任何浮点属性设置动画。第一个参数是属性名称(作为字符串),第二个是结束值,接下来是时间段(以秒为单位),动画的方向(atIn,AtOut),最后是要使用的算法 - 请参阅http://docwiki.embarcadero.com/Libraries/en/FMX.Types.TInterpolationType所有选项。

你还得到了: AnimateColor(为颜色属性设置动画); AnimateFloatDelay(在给定延迟后启动动画); AnimateFloatWait(等到动画结束 - 对链接动画很有用)。

plus,StartAnimation和StopAnimation用于样式中的动画。

答案 2 :(得分:1)

是的,使用动画功能。

我已经构建了类似的东西,为TPanel制作动画。我从关闭屏幕上的Position.X属性开始,并使用类似的东西将面板设置为视图,其中Self是形式:

Panel1.Align := TAlignLayout.alNone;
Panel1.Position.X := Self.Width + 10;
Panel1.Position.Y := 0;
Panel1.Width := Self.Width;
Panel1.Height := Self.Height;
Panel1.AnimateFloatWait('Position.X', 0, 0.3);

在表单的OnResize事件中:

Panel1.Align := TAlignLayout.alClient;