Andriod anim 补间(Tween)动画与Interpolator以及setCustomAnimations方法
补间(Tween)动画
Android 使用Animation代抽象的动画类,它包括如下几个子类。
- AlphaAnimation:透明度改变的动画。创建该动画时要指定动画开始时的透明度、结束时的透明度和动画持续时间。其中透明度可从0变化到1。
- ScaleAnimation:大小缩放的动画。创建该动画时要指定动画开始时的缩放比(以X、Y轴的缩放参数来表示)、结束时的缩放比(以X、Y轴的缩放参数来表示),并指定动画持续时间。由于缩放时以不同点为中心的缩放效果并不相同,因此指定缩放动画时还要通过pivotX、pivotY来指定“缩放中心”的坐标。
- TranslateAnimation:位移变化的动画。创建该动画时只要指定动画开始时的位置(以X、Y坐标来表示)、结束时的位置(以X、Y坐标来表示),并指定动画持续时间即可。
- RotateAnimation:旋转动画。创建该动画时只要指定动画开始时的旋转角度、结束时的旋转角度,并指定动画持续时间即可。由于旋转时以不同点为中心的旋转效果并不相同,因此指定旋转动画时还要通过pivotX、pivotY来指定“旋转轴心”的坐标。
- 一旦为补间动画指定了三个必要信息,Android就会根据动画的开始帧、结束帧、动画持续时间计算出需要在中间“补入”多少帧,并计算所有补入帧的图形。当用户浏览补间动画时,他眼中看到的依然是“逐帧动画”。
- 为了控制在动画期间需要动态“补入”多少帧,具体在动画运行的哪些时刻补入帧,需要借助于Interpolator
Interpolator
Interpolator 根据特定算法计算出整个动画所需要动态插入帧的密度和位置。简单地说,aterpolator负责控制动画的变化速度,这就使得基本的动画效果(AIpha、Scale、Translate Roete能以匀速变化、加速、减速、抛物线速度等各种速度变化。
Interpolator是一个接口,它定义了所有Interpolator都需要实现的方法:float getInterpolation(floatimput),开发者完全可以通过实现Interpolator来控制动画的变化速度。
Android为Interpolator提供了如下几个实现类,分别用于实现不同的动画变化速度。
- LinearInterpolator:动画以均匀的速度改变。
- AccelerateInterpolator:在动画开始的地方改变速度较慢,然后开始加速。
- AccelerateDecelerateInterpolator:在动画开始、结束的地方改变速度较慢,在中间的时候加速。
- CycleInterpolator:动画循环播放特定的次数,变化速度按正弦曲线改变。
- DecelerateInterpolator:在动画开始的地方改变速度较快,然后开始减速。
为了在动画资源文件中指定补间动画所使用的 Interpolator,定义补间动画的<set…/>元素支持
一个android:interpolator属性,该属性的属性值可指定为Android默认支持的Interpolator。例如:
@android:anim/linear_interpolator
@android:anim/accelerate_interpolator
@android:anim/accelerate_decelerate_interpolator
……
其实上面的写法很有规律,它们就是把系统提供的Interpolator实现类的类名的驼峰写法改为下画线写法即可。
一旦在程序中通过AnimationUtils 得到了代表补间动画的Animation 之后,接下来就可调用View的startAnimation(Animation anim)方法开始对该View执行动画了。
位移(translate)、旋转(rotate)、缩放(scale)、透明度(alpha)改变的补间动画
<?xml version="1.0" encoding="utf-8"?>
<!-- 定义动画匀速改变 -->
<set xmlns:android="http://schemas.android.com/apk/res/android"android:interpolator="@android:anim/linear_interpolator" ><translateandroid:duration="500"android:fromYDelta="100%"android:toYDelta="0%" /><rotateandroid:duration="5000"android:fromDegrees="0"android:pivotX="50%"android:pivotY="50%"android:toDegrees="720" /><scaleandroid:duration="1000"android:fillBefore="true"android:fromXScale="1.0"android:fromYScale="1.0"android:pivotX="50%p"android:pivotY="50%p"android:toXScale="2.0"android:toYScale="2.0" /><rotateandroid:duration="1000"android:fromDegrees="0.5"android:toDegrees="1" />
</set>
setCustomAnimations方法
setCustomAnimations (int enter, int exit, int popEnter, int popExit),该方法有4个参数:
- 第一个参数enter是指当一个Fragment被添加added 或者绑定attached到视图上,该Fragment进入视图时的animation或者animator的资源ID;
- 第二个参数exit是指当一个Fragment从视图上被移除removed或者解除绑定detached时,该Fragment移出视图时的animation或者animator的资源ID;
- 第三个参数popEnter是指当调用popBackStack()方法或者类似的方法弹出栈顶的Fragment后,Fragment栈的栈顶Fragment重新被添加readded或重新绑定reattached到视图上时,该Fragment进入视图时的animation或者animator的资源ID;
- 第四个参数popExit是指当调用popBackStack()方法或者类似的方法弹出栈顶的Fragment时,该弹出的Fragment即从视图上被移除removed或者解除绑定detached,该Fragment移出视图时的animation或者animator的资源ID。
getActivity().getSupportFragmentManager().beginTransaction().setCustomAnimations(R.anim.comment_down_animation,R.anim.comment_down_animation).hide(feedCommentFragment).commitAllowingStateLoss();
getChildFragmentManager().beginTransaction().setCustomAnimations(R.anim.comment_fullscreen_anim_enter, R.anim.comment_fullscreen_anim_out).show(commentFragment).commitAllowingStateLoss();
tips:setCustomAnimations方法必须成双出现,要么写两个要么写四个。上面部分代码表示在Activity、Fragment中加载新的Fragment的动画。
Andriod anim 补间(Tween)动画与Interpolator以及setCustomAnimations方法相关推荐
- 补间(Tween)动画
这种动画类似于Flash.补间动画的定义是动画的开始.结束的关键帧,你只需要定义关键的这两帧就可以了.Android使用animation代表抽象的动画类,它包括以下几个子类: alphaAnimat ...
- Android笔记 动画之tween(补间)动画demo
简介:补间动画:做flash动画时,在两个关键帧中间需要做"补间动画",才能实现图画的运动:插入补间动画后两个关键帧之间的插补帧是由计算机自动运算而得到的.(来自百度百科) dem ...
- Andriod anim scale中的属性介绍以及Animation类的属性
ScaleAnimation是Andriod中的补间(Tween)动画中的大小缩放的动画 使用时,需要在res下新建Android Resource Directtory,并选择anim(如已存在就不 ...
- Andriod anim rotate中的属性介绍
RotateAnimation是Andriod中的补间(Tween)动画中的旋转动画 使用时,需要在res下新建Android Resource Directtory,并选择anim(如已存在就不需要 ...
- Andriod anim alpha中的属性介绍
AlphaAnimation是Andriod中的补间(Tween)动画中的透明度改变的动画 使用时,需要在res下新建Android Resource Directtory,并选择anim.在anim ...
- Andriod anim translate中的属性介绍
TranslateAnimation是Andriod中的补间(Tween)动画中的位移变化的动画 使用时,需要在res下新建Android Resource Directtory,并选择anim.在a ...
- 详解TWEEN.JS 补间动画
tweenJS是一个简单的javascript补间动画库,支持数字,对象属性,CSS样式等的动态效果过渡,允许平滑的修改元素的属性值.告诉它需要改变的元素的开始值和结束值,并设置好过渡时间,补间动画将 ...
- 安卓动画全解:补间动画(视图动画)、布局动画、属性动画、逐帧动画。动画Animation属性、Alpha属性、Scale属性、Translate属性、Rotate属性,动画集AnimationSet
全栈工程师开发手册 (作者:栾鹏) 安卓教程全解 安卓动画全解:补间动画(视图动画).布局动画.属性动画.逐帧动画. 主要内容包含:动画Animation属性.Alpha属性.Scale属性.Tran ...
- Flash 第十章 补间动画复习和引导动画
补间动画复习和引导动画 一. 动画制作的流程: 先做出来的肯定是 形状或图片 把它放入-→图形元件,方便制作传统补间 把图形元件放入-→影片剪辑,加入动画 把影片剪辑放入-→舞台 在舞台上调整时间差, ...
最新文章
- 使用NHibernate绑定页面数据时,出现未能加载视图状态,正在向其中加载视图状态。。。。的Bug...
- CV:翻译并解读2019《A Survey of the Recent Architectures of Deep Convolutional Neural Networks》第一章~第三章
- 前端编程提高之旅(六)----backbone实现todoMVC
- sftp 服务器外网访问设置
- CSS知识点补充收集
- 自定义js 延时函数调用延时函sleep();
- Hadoop Hive与Hbase关系 整合
- Linux下计算进程的CPU占用和内存占用的编程方法[转]
- wps云文档+到计算机,读书笔记:WPS云文档计算机版本
- 1302数码管c语言程序,基于AVR单片机的DS1302数码管时间显示C语言程序设计
- Parallel Scavenge收集器
- ldaptemplate 分页_长图片如何分页打印?3秒搞定|360浏览器|chrome浏览器
- STM32WB55使用————Zigbee信息收发
- 软考系统架构师倒计时第6天
- 我国超级计算机第一名是,中国蝉联超级计算机冠军,美国跌出前三
- 【路径规划】基于matlab卡尔曼滤波、三次插值极速赛道赛车路径规划【含Matlab源码 2158期】
- Jupyter 运行py文件 踩过的坑和方法
- Python之禅+八荣八耻
- 长尾关键词是什么,长尾关键词为什么很重要?
- 通信电子电路实验(二)—— 高频C类谐振功率放大器的设计与仿真