[翻译]Animation和Transitions API两者的区别

个人并非英语专业出身,如有翻译不当之处,还请及时指出。文章翻译自StackOverflow,链接 : https://www.reddit.com/r/androiddev/comments/8wqjzv/difference_between_animation_and_transitions_api/

Question: 提问

下面这两组属性有什么区别?

<!-- 1 -->
android:activityOpenEnterAnimation
android:activityOpenExitAnimation
android:activityCloseEnterAnimation
android:activityCloseExitAnimation
<!-- 2 -->
android:windowEnterTransition
android:windowExitAnimation
android:windowReenterTransition
android:windowReturnTransition

在什么情况下,可以用其中一组替代另外一组呢?

Answer: 回答

Animation:

  • Animation 是自 Android 诞生之初就存在的API
  • 据我所知,Animation API 是 Android 用于不同 Activity 之间进行 切换(transitions) 的默认方法
  • Animation 作用的对象是 整个Window(whole window) ,也就是说,Slice, Scale, Fade 等效果,都是作用于 window root 的(就像屏幕被截图后发生的动画那样),而非单独的view
  • Animation 的代码明显更加 健壮(robust) ,但是缺乏灵活性

Transitions API:

  • 一个主要用于 内容(content) 更改的新API(比如当你点开或者折叠一个卡片时,布局产生动画化的变化)
  • 并不是很适合于 Activity 之间的切换(可以参考一下这个链接,里面提到了关于在 Activity 切换期间对 windows decor 的影响),但是直到 Android L 之后才解决了这些问题(可能是因为他们想推出在 Activity 之间进行共享元素的切换的功能)
  • 可以将 动画(animation) 作用于 root view 的子view,而非 root view 自身
  • 它会对子view做完整的扫描,用于决定是否要更改它的可见性,大小,在屏幕中的位置,并且只有当 transition 对他们可用时,才执行操作。(比如:FadeSlide 只能作用于要显示/消失的view;ChangeBounds 只能作用于要改变位置或大小的 view 。你也可以自己去控制在什么情况下适用于哪些 transition 效果)。很明显,进行这些计算是更加消耗性能的。但另一方面来说,这可以帮助你去更轻松地设计并实现交错复杂的动画
  • 你可以创建属于自己的 Transition ,但是 Animation 就不太确定了

原则是:如果你需要共享元素的 动画(transition) ,或者是针对部分内容需要编排一些复杂的移动,就使用 Transition API。但如果只是需要 滑入/淡出/缩放(slide/fade/scale) 的动画效果,就考虑使用Animation


我发现,如果使用transition api进行搜索的话,在Google和Bing上可能会搜索出另一个用于检测用户位置变化信息的API。如果要搜索上面的内容,还是建议使用transition framework比较好。

我和New Bing聊天的结果

最后补充一点,transition framework应该最早是在 Android 4.4(2013/10/31) 就有在使用了,但是根据New Bing的搜索回答来看,其真正的 发布(release) 日期应该是在2016年2月6日…好神奇

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值