2

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

我想知道:是否也可以以其他形状进行操作?

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

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

可以在此处找到有关其外观的视频。

在以前的方法中,我使用了一个定制的 ObjectAnimator(链接在这里),它改变了布局参数(它有效,但它是一种解决方法,它不是完全可定制的,它可能不适用于这种情况),但是我想知道是否有一种新的方法可以做到这一点,更容易和更可定制的东西。

此外,是否有可能使这种动画在以前的 Android 版本上工作,而不仅仅是棒棒糖?

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

4

4 回答 4

4

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

于 2015-01-09T03:53:08.350 回答
0

Google Now 搜索历史动画对我来说只是一个简单的翻译。看起来顶部搜索栏位于历史下拉列表的前面。通过将前面的视图(你想要显示的视图)设置为动画,我认为你会得到你正在寻找的显示。请参阅:https ://stackoverflow.com/a/19766034/2832027

于 2015-01-07T10:36:52.720 回答
0

我想出的唯一解决方案是将视图作为与背景相同的第二层(在 listView 的顶部),它具有按比例缩小的动画。

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

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

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

此外,它也有一些缺点:

  1. 另一层意味着更多的透支。
  2. 如果您有复杂的背景,可能会很棘手。
  3. 使用它可能不如真正的显示动画好。
于 2015-01-08T20:06:15.160 回答
0

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

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

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

于 2019-03-12T10:18:04.900 回答