捋一捋Android的转场动画

捋一捋Android的转场动画

由于录制的gif过大,导致CSDN部分gif无法显示,可以传送到GitHub查看本篇博客

背景

随着 Material Design设计概念的提出,使得很多的开发过程中对动画和UI的优化越来越重要,其中一个重要的动画
就是Material Deisgn : Material Motion

“Motion provides meaning. Objects are presented to the user without breaking the continuity of experience even as they transform and reorganize. Motion in the world of material design is used to describe spatial relationships, functionality, and intention with beauty and fluidity.”

可以看出Motion是多么的强大,但是在Android机型上使用起来并不是一番风顺

历史

  • Android 4.0,引入了新的属性 android:animateLayoutChanges=[true/false] ,所有派生自 ViewGroup 的控件都具有此属性,只要在XML中添加上这个属性,就能实现添加/删除其中控件时,带有默认动画,如果要自定义动画,就需要使用 LayoutTransaction 了。实践证明,实际上这套机制使用起来并不是那么灵活
  • Android 4.4 引入了 Scenes 和 Transitions(场景和变换),Scene 保存了布局的状态,包括所有的控件和控件的属性。布局可以是一个简单的视图控件或者复杂的视图树和子布局。保存了这个布局状态到 Scene 后,我们就可以从另一个场景变化到该场景。从一个场景到另一个场景的变换中会有动画效果,这些动画信息就保存在 Transition 对象中。要运行动画,我们要使用 TransitionManager 实例来应用 Transition

但是归功于Android碎片化,由于不能适配低版本的机型随意很多开发者放弃了这个强大的功能
,但是现在好了有了下面就是开源库 Transitions-Everywhere
,Transitions-Everywhere 向后移植到 Android 4.O ,并且兼容 Android 2.2 +
所以是时候学习转场动画

作用

说了那么多虚无的概率,那转场动画到底是干啥的呢,咱们上一个效果大家就明白了:

slide

其实上面执行的逻辑就是一个Textview的visible设置及时显示和隐藏功能,而且使用起来也很方便代码:

TransitionManager.beginDelayedTransition(llyout,  new Slide(Gravity.LEFT));
tv.setVisibility(tv.getVisibility() == View.GONE ? View.VISIBLE : View.GONE);

实现这样的效果,只需要一行代码就可以,是不是很强大!那就开始咱们今天的学习

环境配置

  • 依赖导入:
compile "com.andkulikov:transitionseverywhere:1.6.5"
  • 将所有类包名为 android.transition.* 的替代为 com.transitionseverywhere.*

动画Transition

那有哪些现成的动画供我们使用呢

  • TransitionSet.用来驱动其他的 Transition .类似于 AnimationSet,能够让一组 Transition 有序
  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值