Android有一个漂亮的揭示动画(称为“CircularReveal”),它有一个圆形(链接here和here)。
我想知道:是否有可能以其他形状做到这一点?
例如,以矩形形状从上到下显示视图,如下所示:
XXX XXX XXX
... => XXX => XXX
... ... XXX
有关它的样子的视频可以找到here。
在以前的方式中,我使用了一个自定义的ObjectAnimator(链接here)来改变布局参数(这是有效的,但它是一个解决方法,它不是很可定制的,它可能不适用于这种情况),但我想知道是否有一种新的方法可以实现,更简单,更可定制。
此外,是否有可能使这种动画在以前的Android版本上运行,而不仅仅是Lollipop?
只是我看到“Google Now Launcher”的搜索历史以这种方式出现,我想知道如何制作类似的东西。
你可以像这个http://cogitolearning.co.uk/?p=1451一样创建一个新的动画师,并定义你自己的矩形动画师。 Here是作者发布的GitHub源代码的参考链接。
Google即时搜索历史动画看起来就像是一个简单的翻译。看起来顶部的搜索栏位于历史记录下拉列表的前面。通过动画前面的视图(你希望被揭示的视图)下来,我想你会得到你正在寻找的揭示。见:https://stackoverflow.com/a/19766034/2832027
我提出的唯一解决方案是将视图作为第二层(在listView之上)与背景相同,后者具有缩小的动画。
所以就像在布局XML中那样:
<FrameLayout >
<ListView/>
<View/>
</FrameLayout>
这应该有效,但它更像是一种解决方法。
此外,它有一些缺点:
检查我的项目:https://github.com/mageRabbitStudios/coolandroidstuff/tree/master/MyCircularReveal_12_3_19
在那里你可以创建你想要的任何揭示动画。听起来很复杂但很简单。我创建了自定义ImageView,我在其中访问其画布的“clipPath”属性。(我发现更改视图的剪辑蒙版的唯一方法,在第三个ImageView上显示更简单的解决方案,我只访问ImageView的clipBounds属性和在此期间不需要创建自定义视图)我在每次绘制时更新clipPath,只有在动画执行期间使用AnimatorUpdateListener并使用ObjectAnimators和自定义Evaluator调用我才能设置从圆到矩形显示动画:)
如果您不理解Kotlin,请将其转换为Java