Android有一个很好的透视动画(称为“CircularReveal”),它有一个圆圈形状(链接here和here)。
我想知道:是否有可能以其他形状做到这一点?
例如,以矩形形状显示从上到下的视图,如下所示:
XXX XXX XXX
... => XXX => XXX
... ... XXX
可以找到here的视频。
在以前的方式中,我使用了一个自定义的ObjectAnimator(链接here)来改变布局参数(这是有效的,但它是一种解决方法,而且它不是可定制的,它可能不会在这个案例上工作),但我想知道是否有新方法可以做到这一点,更简单,更可定制。
此外,是否可以在以前的Android版本上制作这种动画,而不仅仅是Lollipop?
只是我看到“Google Now Launcher”的搜索历史以这种方式出现,我想知道如何制作类似的东西。
答案 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>
这应该有效,但它更像是一种解决方法。
此外,它有一些缺点:
答案 3 :(得分:0)
检查我的项目:https://github.com/mageRabbitStudios/coolandroidstuff/tree/master/MyCircularReveal_12_3_19
您可以在其中创建所需的任何显示动画。听起来很复杂,但是非常简单。我创建了自定义ImageView,可在其中访问其画布的“ clipPath”属性。(我发现更改视图的剪贴蒙版的唯一方法是,在第三个ImageView上显示了更简单的解决方案,在该视图中,我仅访问ImageView的clipBounds属性,在此期间,不必创建自定义视图)我仅在动画执行过程中使用AnimatorUpdateListener并使用ObjectAnimators和自定义评估器来更新每次绘制时都调用的clipPath,我设法从圆形创建为矩形以显示动画:)
如果您不了解Kotlin,请将其转换为Java