Transition(过渡动画效果)
概览
这个包中的类为view提供 scenes & transitions结构
AutoTransition | 工具类,创建一个缺省转换,淡入/淡出,在一个场景中移动和调整大小,当view改变时。 |
ChangeBounds | 这种转变捕获目标的边界布局视图之前和之后的场景变化,在过渡时赋予这些变化。 |
Fade | 在开始和结束时跟踪目标view的可见性,淡入/淡出view当view变为可见/不可见 |
Scene | 一个场景代表view层次结构中所有属性值的集合 |
Transition | 一个transition持有在场景切换时要运行的动画的所有信息 |
TransitionInflater | 从资源文件中映射(inflate)scenes 和transitions |
TransitionManager | 管理类,管理多个transition的执行顺序 |
TransitionSet | 是transitions的一个子集 |
TransitionValues | 持有transition的缓存的数据结构 |
Visibility | 跟踪目标view动画开始和结束时的可见性 |
Scene
Transition(抽象类)
java.lang.Object | |
↳ | android.transition.Transition |
![]()
ChangeBounds, TransitionSet, Visibility
|
![]()
AutoTransition, Fade
|
SurfaceView
和 TextureView
,上,过渡或许无法工作,因为这些view都是在屏幕上展示的。对于 SurfaceView,问题在于view的更新在一个非ui 线程中,所有使用过渡的动画(例如移动和调整view)或许会无法同步显示。 TextureView 相比较更加兼容过渡,但是有些特别的过渡(如淡入/淡出)或许会无法工作,因为它依赖于 ViewOverlay
的功能,这个功能在 TextureView不能保证它正常工作。
res/transition
目录下被定义。 transition 资源文件由一个标签名为transition 子类的属性来定义一下属性的转变。例如,这是一个定义了 ChangeBounds
过渡的最小资源文件:
<changeBounds/>
TransitionSet
过渡,并且包含 ChangeBounds和
Fade子过渡
:
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android"
android:transitionOrdering="sequential">
<changeBounds/>
<fade android:fadingMode="fade_out" >
<targets>
<target android:targetId="@id/grayscaleContainer" />
</targets>
</fade>
</transitionSet>
ORDERING_TOGETHER
开始变换,而不是 ORDERING_SEQUENTIAL。同样,fade 过渡使用了 fadingMode 的out模式,而不是默认的out-in 模式。最后,请注意使用的targets 子标签,它用来设置target ,列表中有一个特定的targetId 来确定这个transition 工作在什么上。使用targets 是可选的,通常被用来在那些限制了检查属性拼写时间不变的view上,或者限制了动画类型的view上。在这个案例中,只有 grayscaleContainer
会消失,所以我们选择在这个view上只有fade过渡的限制。
ChangeBounds
changeBounds
, ,标签可定义一个 ChangeBounds。
TransitionSet
ORDERING_TOGETHER
或 ORDERING_SEQUENTIAL
. 例如, AutoTransition使用一个 TransitionSet 来按顺序的播放一个 Fade(Fade.OUT) ,之后是 ChangeBounds , 再之后是 Fade(Fade.OUT) 过渡。
TransitionSet
和 Transition
资源文件下被描述,使用 transitionSet 标签。在 TransitionSet 对象中的子过渡可以通过加入相应的标签来加入。例如,下面的xml描述了一个 TransitionSet 播放一个fade,然后是changeboudns过渡:
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android"
android:ordering="sequential">
<fade/>
<changeBounds/>
</transitionSet>
AutoTransition
autoTransition
,标签可定义一个AutoTransition .
Visibility
onAppear(ViewGroup, TransitionValues, int, TransitionValues, int)
,
onDisappear(ViewGroup, TransitionValues, int, TransitionValues, int)
,
Fade
GONE
或 INVISIBLE
,(不可见),在动画期间,它的可见性会变为 VISIBLE。然而,如果一个在层次结构中的view 改变了它的可见性,情况就变得更加复杂了。事实上,如果一个在层次结构中的view在最后一个场景中仍然有父view(移除整个层次结构,而不是在该结构中移除它),这样,它也会被移除而避免由于不正确的从父view中移除它而带来的边界效应。这个情况下唯一的例外就是这个开始场景是直接在布局资源文件中创建的,这样,它就被正确的确认为没有父节点,开始场景就可以开始淡出了。
fade
, ,标签可定义一个 Fade 。
TransitionManager
setTransition(Scene, Transition)
or setTransition(Scene, Scene, Transition)
. 传入被管理的scene 和transition 。为屏幕切换而设置具体的过渡并不是必须的;默认情况下,场景的切换更多的是用 AutoTransition
来做些事情。为特定场景而设置的具体的过渡仅仅在应用需要有不同的过渡效果这种情况下才使用。
res/transition
目录下被 声明。过渡管理器资源由 transitionManager name标签名,包含一个或多个 transition
标签,每一个都描述了transition 所应用的两个scene (fromScene & toScene )。例如,下面的资源文件展示了一个简单的场景转换:
<transitionManager xmlns:android="http://schemas.android.com/apk/res/android">
<transition android:fromScene="@layout/transition_scene1"
android:toScene="@layout/transition_scene2"
android:transition="@transition/changebounds"/>
<transition android:fromScene="@layout/transition_scene2"
android:toScene="@layout/transition_scene1"
android:transition="@transition/changebounds"/>
<transition android:toScene="@layout/transition_scene3"
android:transition="@transition/changebounds_fadein_together"/>
<transition android:fromScene="@layout/transition_scene3"
android:toScene="@layout/transition_scene1"
android:transition="@transition/changebounds_fadeout_sequential"/>
<transition android:fromScene="@layout/transition_scene3"
android:toScene="@layout/transition_scene2"
android:transition="@transition/changebounds_fadeout_sequential"/>
</transitionManager>
fromScene
和 toScene
属性,这里使用的是xml布局文件中的引用。这和通过代码调用 getSceneForLayout(ViewGroup, int, Context)
.来创建scene 是等价的。对于 transition 属性,使用的是在 res/transition
目录下的关于transition 的引用。
TransitionInflater
- 从上下文中获取 TransitionInflater: from(Context context)
- 从资源文件中加载一个transition:inflateTransition(int resource)
- 从资源文件中加载一个transitionManager:inflateTransitionManager(int resource, ViewGroup sceneRoot)
TransitionValues
captureStartValues(TransitionValues)
来缓存起来,在场景开始和结束时各捕获一次。这些开始/结束值经由 transitions的 createAnimator(ViewGroup, TransitionValues, TransitionValues)
方法传递进来。
总结
- 开始scene和结束scene
- 过渡动画(transition )及其子类或自定义的子类
- 管理器
使用TransitionInflater来从资源文件中获取过渡动画和管理器
使用TransitionValues来管理相关的数据(view &transition )
使用TransitionSet来组织更为复杂的过渡效果
如何自定义过渡动画
- 继承Transition
- 实现 captureStartValues、 captureEndValues、 createAnimator方法
Transition(过渡动画效果)相关推荐
- 取消hover效果_CSS3 transition过渡动画效果
本章主要探讨 HTML5 中 CSS3 的过渡效果,通过这个功能可以不借助 JavaScript 来实现简单的用户交互功能. 一.过渡简介 过渡效果一般是通过一些简单的 CSS 动作触发平滑过渡功能, ...
- react过渡动画效果的实现,react-transition-group
本文介绍react相关的过渡动画效果的实现 有点类似vue的transition组件,主要用于组件mount和unmount之前切换时应用动画效果 安装 cnpm install react-tran ...
- Vue入门之animate过渡动画效果
简介: transition方法的使用 transition内置方法 transition-group animate库实现过渡动画 `<!DOCTYPE html>` `<html ...
- js html页面切换效果,jQuery实现切换页面过渡动画效果
这篇文章主要介绍了关于jQuery实现切换页面过渡动画效果,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 这是一款效果非常酷的jQuery和CSS3通过AJAX调用切换页面过渡动画特效 ...
- Android Transition过渡动画
在Android 4.4 Transition 就已经引入了,但在Android 5.0(API 21)之后,Transition 被更多的应用起来.相对于View Animation或Propert ...
- transition过渡动画的自述
Hi,大家好!我是transition,经常有小伙伴把我和隔壁animation搞混,下面我就好好的介绍一下自己,让大家能明白我到底是干啥的. 看看我身上的属性吧: 大家总是叫我transition, ...
- Flutter ColorTween实现颜色过渡动画效果
志在巅峰的攀登者,不会陶醉在沿途的某个脚印之中,在码农的世界里,优美的应用体验,来源于程序员对细节的处理以及自我要求的境界,年轻人也是忙忙碌碌的码农中一员,每天.每周,都会留下一些脚印,就是这些创作的 ...
- ppt模板页面过渡动画效果怎么制作?
一个好看的ppt模板,动画效果少不了,ppt模板制作软件也带了不少动画效果,ppt家园下面就来介绍一下ppt模板页面过渡动画效果怎么制作? 插入-图片-将两张图片素材导入-一张铺满PPT页面-一张放在 ...
- android 颜色过渡动画效果,Android buttom textview 颜色平滑过渡的动画效果
1.TransitionDrawable.例如,在文件夹中绘制一个xml文件,你可以这样写: 然后,在你的xml的实际检视你都引用这个TransitionDrawable在android:backgr ...
最新文章
- 互联网营销离不开“SEO”
- Python多线程原理与实现
- Install OpenCL on Debian, Ubuntu and Mint orderly
- SQL Server类型与C#类型对应关系
- android 自定义加载动画效果,Android 自定义View修炼-自定义加载进度动画LoadingImageView...
- Ubuntu禁用root登录
- 语音信号处理基础(一)
- 【Web】关于Session过期/失效的理解
- 车载高精度GNSS定位天线
- JSON对象如何转化为字符串?
- topcon gps 软件下载
- c语言中各种符号的意思。
- 四、Storm入门之Spout
- 常见混沌系统—Lorenz模型
- LWIP 以太网先启动后插入网线无法入网的解决办法
- python爬虫与java爬虫的区别_java爬虫(一)主流爬虫框架的基本介绍
- 码题集新手村600道(前300道)
- 算法训练Day6:有效的字母异位词, 两个数组的交集,快乐数,两数之和
- html5内嵌式格式,如何使用内嵌式引入css样式表
- keil调试过程中源代码界面没有箭头