Scenes and Transitions(1)——转换框架
2015-11-09 16:26
274 查看
给你的用户界面添加动画提供了比静态界面更多的信息。动画强调了发生的改变,并且提供了帮助用户了解你的应用如何工作的视觉线索。
为了帮助你在一个view hierarchy和另一个之间执行动画,Android提供了转换框架。这个框架对不同hierarchies中的所有view应用动画,使得看起来好像从一个hierarchy变换到了另外一个。
这个框架有以下功能:
1. 分组动画:使得一个view hierarchy种的所有views可以执行一个或多个动画效果。
2. 转换动画:基于开始和结束的view的属性值来执行动画。
3. 内置动画:对常用的效果有内置动画,比如逐渐变淡或者移动
4. 资源文件支持:从layout resource files中加载view hierarchies和内置动画。
5. 声明周期回调:定义了生命周期回调来控制动画和heirarchy改变的过程。
点此查看动画效果视频
上述视频fades out old views and fades in new views
这个动画是使用转换框架的一个例子。转换框架对两个view hierarchy的所有view执行了动画。一个view hierarchy可以简单成一个view也可以复杂成一个含有一个tree of views的ViewGroup。这个框架通过改变一个或多个属性来实现从一个view hierarchy动画转换到另外一个view hierarchy。
转换框架和view hierarchies和animations并行工作。原理是这个框架存储view hierarchies的状态,从一个hierarchy变换到另外一个来改变设备屏幕的显示,通过保存和应用动画定义来进行动画转换。
下图说明了view hierarchies,framework objects,animations之间的关系。
转换框架提供了对场景,转换,转换管理者的抽象。这些会在下面的部分仔细描述。为了使用这个框架,你创造了一个准备使用转换的场景。然后,你为每一个想要使用的动画创建一个transition。为了开始转换,你使用一个transition manager来指定一个transition并结束这个场景。这个过程会在下面详细叙述。
一个scene保存了一个view hierarchy的状态,包括它所有的子views和他们的属性。一个view hierarchy可以简单到一个view也可以复杂到一个views tree。在一个scene中保存view hierarchy的状态使得你可以从另外一个场景转换到这个状态。这个框架提供了Scene类来表示一个场景。
转换框架允许你从layout resource files或者ViewGroup对象创建场景。如果你动态创建了一个view hierarchy或者动态修改它的时候,创建一个场景非常有用。
在大多数情况下,你不会显式的创建开始场景。如果你使用了一个transition,框架使用先前的最终场景来作为任何之后转换的开始场景。如果你没有应用transition,这个框架收集当前屏幕所有views的状态信息。
一个场景也可以在场景改变的时候定义它自己的操作。举例而言,这个功能在你转换到一个场景之后需要清除view的设置的时候非常有效。
作为view hierarchy和自己的属性值的补充,一个场景也保存一个父view hierarchy的引用。这个root view被叫做scene root。对场景的改变或者影响场景的动画在scene root中发生。
学习怎样创建场景,参考Creating a Scene
在转换框架中,动画产生了一系列画面来描画从开始场景到结束场景中的view hierarchy改变。动画的信息被保存在Transition对象中。为了播放动画,你使用一个TransitionManager实例来使用转换。这个框架可以对两个不同的场景转换或者对同一个场景的不同状态来转换。
这个框架包含了常用动画效果的内置的转换,比如变亮变淡和改变view的尺寸。你也可以使用animation framework中的API来创建一个动画效果,进行自定义转换。转换框架也允许你将不同的动画效果结合到一个转换集合中。
转换的生命周期和activity生命周期类似,它代表了不同的转换状态。在重要的生命周期状态,框架会调用生命周期回调,让你可以在不同的转换节点来调整你的用户界面。
学习更多于transitions相关的内容,参考Applying a Transition和Creating Custom Transitions
下面列出一些transitions framework的已知限制:
1. 应用到SurfaceView的动画可能不会正确显示。SurfaceView实例在非UI线程中更新,所以这个更新可能会和其他的views不同步。
2. 在应用到TextureView上的时候,有一些特定的转换类型可能不会产生想要的动画效果。
3. 继承了AdapterView的类,比如ListView,和transitions framework不兼容。如果你试图对一个AdapterView执行动画,设备的显示可能会挂起。
4. 如果你试图用动画给TextView重新设置大小,文字会在TextView对象完全转换之前先跑到新的位置。为了避免这个问题,不要在包含文字的view里面通过动画给views重新设置大小。
为了帮助你在一个view hierarchy和另一个之间执行动画,Android提供了转换框架。这个框架对不同hierarchies中的所有view应用动画,使得看起来好像从一个hierarchy变换到了另外一个。
这个框架有以下功能:
1. 分组动画:使得一个view hierarchy种的所有views可以执行一个或多个动画效果。
2. 转换动画:基于开始和结束的view的属性值来执行动画。
3. 内置动画:对常用的效果有内置动画,比如逐渐变淡或者移动
4. 资源文件支持:从layout resource files中加载view hierarchies和内置动画。
5. 声明周期回调:定义了生命周期回调来控制动画和heirarchy改变的过程。
点此查看动画效果视频
上述视频fades out old views and fades in new views
这个动画是使用转换框架的一个例子。转换框架对两个view hierarchy的所有view执行了动画。一个view hierarchy可以简单成一个view也可以复杂成一个含有一个tree of views的ViewGroup。这个框架通过改变一个或多个属性来实现从一个view hierarchy动画转换到另外一个view hierarchy。
转换框架和view hierarchies和animations并行工作。原理是这个框架存储view hierarchies的状态,从一个hierarchy变换到另外一个来改变设备屏幕的显示,通过保存和应用动画定义来进行动画转换。
下图说明了view hierarchies,framework objects,animations之间的关系。
转换框架提供了对场景,转换,转换管理者的抽象。这些会在下面的部分仔细描述。为了使用这个框架,你创造了一个准备使用转换的场景。然后,你为每一个想要使用的动画创建一个transition。为了开始转换,你使用一个transition manager来指定一个transition并结束这个场景。这个过程会在下面详细叙述。
一个scene保存了一个view hierarchy的状态,包括它所有的子views和他们的属性。一个view hierarchy可以简单到一个view也可以复杂到一个views tree。在一个scene中保存view hierarchy的状态使得你可以从另外一个场景转换到这个状态。这个框架提供了Scene类来表示一个场景。
转换框架允许你从layout resource files或者ViewGroup对象创建场景。如果你动态创建了一个view hierarchy或者动态修改它的时候,创建一个场景非常有用。
在大多数情况下,你不会显式的创建开始场景。如果你使用了一个transition,框架使用先前的最终场景来作为任何之后转换的开始场景。如果你没有应用transition,这个框架收集当前屏幕所有views的状态信息。
一个场景也可以在场景改变的时候定义它自己的操作。举例而言,这个功能在你转换到一个场景之后需要清除view的设置的时候非常有效。
作为view hierarchy和自己的属性值的补充,一个场景也保存一个父view hierarchy的引用。这个root view被叫做scene root。对场景的改变或者影响场景的动画在scene root中发生。
学习怎样创建场景,参考Creating a Scene
在转换框架中,动画产生了一系列画面来描画从开始场景到结束场景中的view hierarchy改变。动画的信息被保存在Transition对象中。为了播放动画,你使用一个TransitionManager实例来使用转换。这个框架可以对两个不同的场景转换或者对同一个场景的不同状态来转换。
这个框架包含了常用动画效果的内置的转换,比如变亮变淡和改变view的尺寸。你也可以使用animation framework中的API来创建一个动画效果,进行自定义转换。转换框架也允许你将不同的动画效果结合到一个转换集合中。
转换的生命周期和activity生命周期类似,它代表了不同的转换状态。在重要的生命周期状态,框架会调用生命周期回调,让你可以在不同的转换节点来调整你的用户界面。
学习更多于transitions相关的内容,参考Applying a Transition和Creating Custom Transitions
下面列出一些transitions framework的已知限制:
1. 应用到SurfaceView的动画可能不会正确显示。SurfaceView实例在非UI线程中更新,所以这个更新可能会和其他的views不同步。
2. 在应用到TextureView上的时候,有一些特定的转换类型可能不会产生想要的动画效果。
3. 继承了AdapterView的类,比如ListView,和transitions framework不兼容。如果你试图对一个AdapterView执行动画,设备的显示可能会挂起。
4. 如果你试图用动画给TextView重新设置大小,文字会在TextView对象完全转换之前先跑到新的位置。为了避免这个问题,不要在包含文字的view里面通过动画给views重新设置大小。
相关文章推荐
- 典型用户和场景
- 9.C#的类及应用
- 通俗理解阻塞、非阻塞,同步、异步。
- 我知道你不知道的负Margin
- gulp详细入门教程
- 第6周 项目5 后缀表达式
- firefox 2次提交请求的bug解决
- abstract类与接口的问题。
- 第八周项目2-建立链串的算法库
- C#关于文件版本号的编译
- Git和SVN之间的五个基本区别
- ubuntu apache2 mod_auth_mysql配置
- 关于字符串的包含问题
- 用Margin还是用Padding
- gulp教程之gulp-rev-append
- 百度地图SDK 基本使用
- Java异常处理机制【转载】
- mac mysql gz 安装
- CDockablePane上面的工具条CMFCToolBar,怎么加ToolTips(信息提示)或者Prompt(状态栏提示)
- leetcode Invert Binary Tree