【问题标题】:Android: How to animate several views from different activities after finish()?Android:如何在完成()之后为不同活动的多个视图设置动画?
【发布时间】:2015-02-13 23:39:35
【问题描述】:

我希望新活动视图的缩放动画与移动按钮平行,并且旧活动的 ImageView 在不同方向上移出屏幕。 overridependingtransition() 需要 xml 资源,但是你不能编码,例如缩放单个视图。 并且使用 Java 代码,我无法启动一个新的 Activity(带动画)并同时启动旧 Activity 的动画。 我怎么能做到这一点? 最好使用 XML 编码

这是我想做的一个插图: http://i.stack.imgur.com/C1jqg.png

【问题讨论】:

标签: android xml transition


【解决方案1】:

您所描述的看起来像是两个活动之间的过渡。您可以使用新活动转换的 API。看这里:https://developer.android.com/training/material/animations.html#Transitions 请记住,兼容性级别为 21。它仅适用于棒棒糖设备。 如果你想在21以下兼容,你可以尝试自己实现。

  • 第一步是通过在 startActivity() 之后立即调用 overridePendingTransition(0,0) 来覆盖转换
  • 第二步是使新活动的背景透明,并放置要设置动画的视图。
    例如,如果您希望将第一个活动中的图像视图放大并移动到新活动中的新位置,则可以根据意图将图像视图的坐标和大小发送到新活动,然后移动并缩小新活动中的图像视图以与前一个活动中的图像视图重叠(因为背景是透明的)。
    要将其设置为实际大小,只需将 scaleX() scaleY() 设置为 1(新活动中的原始大小),并将 translateX() translationY() 设置为 0(新活动中的原始位置)为它的位置。
  • 然后,在新活动的布局之后,您可以将视图设置为动画到它们的新位置。见http://developer.android.com/guide/topics/graphics/overview.html

【讨论】:

  • 使背景透明后,我应该在步骤 2 中做什么?将旧活动和新活动的所有视图放在这个新活动中并制作动画或制作三个活动,而第二个活动仅用于制作动画?
  • @user3642735 我已经编辑了我的答案。请记住,您正在做的事情并不容易。为了将视图从第一个活动中的位置A放置到新活动中的位置B,您需要将坐标A发送到新活动,获取活动B中视图的坐标,做减法x和y( B.x - A.x 和 B.y - A.y) 并使用结果中的 setTranslationX()、setTranslationY() 将新视图放在旧视图之上。
  • 我需要这些职位吗?我正在使用带权重的线性布局。老实说,我不明白该怎么做对不起>.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-30
相关资源
最近更新 更多