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

发布于 2025-01-04 04:54:27 字数 148 浏览 1 评论 0 原文

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

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

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

I have a control inside a form. This show another control on top of it when a event happend, then it disappear and show the first control.

I wish to have a smooth "slide-in/out" animation like is common in iOS, instead of appear/disappear.

I see that firemonkey have some animation components, but have no clue in how use them.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

遇到 2025-01-11 04:54:27

查看 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(等待动画完成 - 对于链接动画很有用)。

另外,StartAnimation 和 StopAnimation 用于某种样式的动画。

Look at the TFMXObject.AnimateXXX functions: http://docwiki.embarcadero.com/Libraries/en/FMX.Types.TFmxObject_Functions (TFMXObject is a parent of all FireMonkey controls, so you can use these functions for any control).

A few samples using AnimateFloat:

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

AnimateFloat animates any floating point property. First parameter is the property name (as a string), second the ending value, next the time period (in seconds), which direction to animate (atIn, AtOut), and finally the algorithm to use - see http://docwiki.embarcadero.com/Libraries/en/FMX.Types.TInterpolationType for all the options.

You also got:
AnimateColor (animate a color property);
AnimateFloatDelay (start an animation after a given delay);
AnimateFloatWait (wait until the animation finished - useful for chaining animations).

plus, StartAnimation and StopAnimation for use with animations in a style.

嗳卜坏 2025-01-11 04:54:27

绝对地!

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

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

Absolutely!

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

Despite the name, these effects apply to controls too, not just bitmaps.
Also check out the sample projects supplied (shadereffects)

笑,眼淚并存 2025-01-11 04:54:27

是的,使用动画功能。

我已经构建了类似的东西,动画 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;

Yes, use the animation functions.

I've built something like this, animating TPanel. I start with the Position.X property off screen and animate the panel into view with something like this, where Self is the form:

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);

In the form's OnResize event:

Panel1.Align := TAlignLayout.alClient;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文