什么是ViewOverlay?
ViewOverlay是4.3以后(api 18+)新增的一个类,它是view的最上面的一个透明的层,我们可以在这个层之上添加内容而不会影响到整个布局结构
。这个层和我们的界面大小相同,可以理解成一个浮动在界面表面的二维空间
。
那么,它是如何工作的呢?
只需要调用任何view的getOverlay() 方法就可以获得该view的ViewOverlay
,或者如果你是调用ViewGroup的getOverlay()方法获得的将是ViewGroupOverlay,ViewOverlay和ViewGroupOverlay是同一个概念
。
ViewOverlay 的接口有:
- add(Drawable drawable)、add(View view)方法往ViewGroupOverlay中添加元素。
- clear()和remove(Drawable drawable)方法来移除元素
好吧,但是为什么我们需要用ViewOverlay呢?
ViewOverlay 仅仅是可见的
,ViewOverlay中的view或者drawable不会响应任何触摸事件。因此ViewOverlay非常适合用在动画效果中
。即它主要是来做不可操作的动画效果的
4.4之后的transaction api中,动画就是在
ViewOverlay
之上实现的。
Transition系列文章
一、初识Transition—实现两个场景的变换
二、番外篇 Transition之ViewOverlay
三、定义 界面指定元素 或界面间共享元素 的转场动画基础
四、Content Transition实现非共享元素转场
五、SharedElementTransition之Activity间的转场
六、SharedElementTransition之Fragment间的转场
七、番外篇- 自定义Visibility
八、5.0以下实现共享转场
网友评论