如何创建一个不是循环的“揭示”效果?

问题描述 投票:2回答:4

Android有一个漂亮的揭示动画(称为“CircularReveal”),它有一个圆形(链接herehere)。

我想知道:是否有可能以其他形状做到这一点?

例如,以矩形形状从上到下显示视图,如下所示:

XXX     XXX    XXX
...  => XXX => XXX
...     ...    XXX

有关它的样子的视频可以找到here

在以前的方式中,我使用了一个自定义的ObjectAnimator(链接here)来改变布局参数(这是有效的,但它是一个解决方法,它不是很可定制的,它可能不适用于这种情况),但我想知道是否有一种新的方法可以实现,更简单,更可定制。

此外,是否有可能使这种动画在以前的Android版本上运行,而不仅仅是Lollipop?

只是我看到“Google Now Launcher”的搜索历史以这种方式出现,我想知道如何制作类似的东西。

android circularreveal
4个回答
2
投票

你可以像这个http://cogitolearning.co.uk/?p=1451一样创建一个新的动画师,并定义你自己的矩形动画师。 Here是作者发布的GitHub源代码的参考链接。


0
投票

Google即时搜索历史动画看起来就像是一个简单的翻译。看起来顶部的搜索栏位于历史记录下拉列表的前面。通过动画前面的视图(你希望被揭示的视图)下来,我想你会得到你正在寻找的揭示。见:https://stackoverflow.com/a/19766034/2832027


0
投票

我提出的唯一解决方案是将视图作为第二层(在listView之上)与背景相同,后者具有缩小的动画。

所以就像在布局XML中那样:

<FrameLayout >
 <ListView/>
 <View/>  
</FrameLayout>

这应该有效,但它更像是一种解决方法。

此外,它有一些缺点:

  1. 另一层意味着更多的透支。
  2. 如果您有复杂的背景,可能会很棘手。
  3. 它可能不如真正的揭示动画那么好用。

0
投票

检查我的项目:https://github.com/mageRabbitStudios/coolandroidstuff/tree/master/MyCircularReveal_12_3_19

在那里你可以创建你想要的任何揭示动画。听起来很复杂但很简单。我创建了自定义ImageView,我在其中访问其画布的“clipPath”属性。(我发现更改视图的剪辑蒙版的唯一方法,在第三个ImageView上显示更简单的解决方案,我只访问ImageView的clipBounds属性和在此期间不需要创建自定义视图)我在每次绘制时更新clipPath,只有在动画执行期间使用AnimatorUpdateListener并使用ObjectAnimators和自定义Evaluator调用我才能设置从圆到矩形显示动画:)

如果您不理解Kotlin,请将其转换为Java

© www.soinside.com 2019 - 2024. All rights reserved.