如何创建"揭示"不是循环的影响?

时间:2015-01-01 11:44:27

标签: android circularreveal

Android有一个很好的透视动画(称为“CircularReveal”),它有一个圆圈形状(链接herehere)。

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

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

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

可以找到here的视频。

在以前的方式中,我使用了一个自定义的ObjectAnimator(链接here)来改变布局参数(这是有效的,但它是一种解决方法,而且它不是可定制的,它可能不会在这个案例上工作),但我想知道是否有新方法可以做到这一点,更简单,更可定制。

此外,是否可以在以前的Android版本上制作这种动画,而不仅仅是Lollipop?

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

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

所以它就像布局XML中的那样:

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

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

此外,它有一些缺点:

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

答案 3 :(得分:0)

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

您可以在其中创建所需的任何显示动画。听起来很复杂,但是非常简单。我创建了自定义ImageView,可在其中访问其画布的“ clipPath”属性。(我发现更改视图的剪贴蒙版的唯一方法是,在第三个ImageView上显示了更简单的解决方案,在该视图中,我仅访问ImageView的clipBounds属性,在此期间,不必创建自定义视图)我仅在动画执行过程中使用AnimatorUpdateListener并使用ObjectAnimators和自定义评估器来更新每次绘制时都调用的clipPath,我设法从圆形创建为矩形以显示动画:)

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