谷歌地图的布局是如何实现动画效果的?

9

我正在尝试理解谷歌地图应用程序中使用的动画。

我想要了解的部分是当您点击工具栏中的文本框时。布局会以动画形式呈现一个全新的屏幕,并从底部滑入一些项目。

这是如何完成的?这是底部表格变为可见吗?还是一个带有共享元素转换的新活动?


1
可能是类似于Google Maps v7的滑动布局的重复问题。 - OneCricketeer
@cricket_007 不是重复的问题。可以使用底部表或向上滑动面板相当容易地实现该效果。 :) - An SO User
它以前是一个滑动面板,在棒棒糖之前。 - OneCricketeer
3个回答

2
那被称为活动转换。在那里,您可以选择哪些布局应该移动到第二个活动中。有关动画的官方文档,请参见:http://developer.android.com/training/material/animations.html#Transitions 另一个很好的入门点是来自Google开发者的视频讲座:https://www.youtube.com/watch?v=RhiPJByIMrM 基本上,您需要像这样修改样式:
<style name="BaseAppTheme" parent="android:Theme.Material">
  <!-- enable window content transitions -->
  <item name="android:android:windowActivityTransitions">true</item>

  <!-- specify enter and exit transitions -->
  <item name="android:windowEnterTransition">@transition/explode</item>
  <item name="android:windowExitTransition">@transition/explode</item>

  <!-- specify shared element transitions -->
  <item name="android:windowSharedElementEnterTransition">
    @transition/change_image_transform</item>
  <item name="android:windowSharedElementExitTransition">
    @transition/change_image_transform</item>
</style>

您还需要指定一个特殊的属性,称为android:transitionName,以告诉系统您想将其从一个活动移动到第二个活动。


据我所知,活动转换是Lollipop的功能。它们在appcompat中可用吗? :) - An SO User
不可能,因为动画运行在与正常 UI 不同的线程上。然而,在这种特殊情况下,如果您只是用动画替换片段,也许会起作用。 - rekire
好的,在地图应用程序中,相同的动画在Lollipop之前完成。是否可以在onCreate()中将动画应用于布局,以便一些元素从底部滑入? - An SO User
如果这在棒棒糖之前有效,那么他们可能只是使用带有片段的普通动画。在这种情况下,我猜他们会显示一个片段,在该片段中所有元素默认都被隐藏,然后在背景填充动画之后,元素会逐渐淡入。 - rekire
我认为OP是在询问这个 https://github.com/umano/AndroidSlidingUpPanel... 不是关于Activity之间的转换。 - OneCricketeer

1
这是一个包含两种模式的单一活动:地图模式和输入+列表模式。 您可以拥有一个FrameLayout,并在其中放置地图根视图(可见)和输入根视图(隐藏)。当您想要打开列表时,将其设置为可见,并使用ViewAnimation将其向上动画化。 更好的方法是将这两个主要视图分成两个片段,并对片段进行动画处理。

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接