Android属性动画分析
来源:互联网 发布:收看日本电视台软件 编辑:程序博客网 时间:2024/06/05 19:44
1、属性动画是3.0之后出来的,在属性动画中有两个属性框架,分别是ObjectAnimator或ValueAnimator,下面我们来详细的介绍它们的用法。
ObjectAnimator是属性动画框架中最重要的实行类,创建一个ObjectAnimator只需要通过它的静态工厂类直接返回一个ObjectAnimator对象。
ObjectAnimator animator = ObjectAnimator.ofFloat(view,"rotation",0f,360f); animator.setDuration(2000); animator.start();这是一个View的旋转动画,第一个参数是View对象,第二个参数是要操作的属性,后面是一个可变数组参数,我这传的是0f到360f是表示控件旋转360度,
填2000参数是表示做这个旋转动画执行2000毫秒。
2、我们来介绍ObjectAnimator操作的属性。
translationX和translationY:这两个属性作为一种增量来控制这View对象从它布局容器的左上角坐标开始的位置。
rotation,rotationX,rotationY:这三个属性控制View对象围绕支点进行2D和3D旋转。
scaleX和scaleY:这两个属性控制着View对象围绕他的支点进行2D缩放。
pivotX和pivotY:这两个属性控制着View对象的支点位置,围绕这个支点进行旋转和缩放变换处理。默认情况下,该支点的位置就是View对象的中心点。
X 和 Y:这是两个简单实用的属性,他描述了View对象在它的容器中的最终位置,它是最初的左上角坐标和translationX,translationY值得累计和。
alpha:它表示View对象的alpha透明度。默认值是1(不透明),0代表完全透明(不可见)。
3、要同时使用动画时可以使用PropertyValuesHolder对象来控制translationX,scaleX,scaleY这三个属性。
PropertyValuesHolder pvh1=PropertyValuesHolder.ofFloat(“translationX”,300f);PropertyValuesHolder pvh2=PropertyValuesHolder.ofFloat(“scaleX”,1f,0,1f);PropertyValuesHolder pvh3=PropertyValuesHolder.ofFloat(“scaleY”,1f,0,1f); ObjectAnimator.ofPropertyValuesHolder(view,pvh1,pvh2,pvh3) .setDuration(1000) .start();4、在来说说ValueAnimator在属性动画中占有非常重要的地位,虽然不想ObjectAnimator那样耀眼但它却是属性动画的核心所在,ObjectAnimator也是继承ValueAnimator。
ValueAnimator animator = ValueAnimator.ofFloat(0,100); animator.setTarget(view); animator.setDuration(1000); animator.start();
5、动画事件的监听。
ValueAnimator animator = ValueAnimator.ofFloat(0,100); animator.addListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) { //监听动画开始 } @Override public void onAnimationEnd(Animator animation) { //监听动画结束 } @Override public void onAnimationCancel(Animator animation) { //监听动画取消 } @Override public void onAnimationRepeat(Animator animation) { //监听动画是否重复 } }); animator.start();当然如果使用不了这多的方法,也不需要重写这么的方法 ,Api也提供了这种处理。
ObjectAnimator animator = ObjectAnimator.ofFloat(this,"translationX",360f); animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { //监听动画值 } });
6、AnimatorSet动画集合
对于一属性同时作用多个属性动画效果,前面已经用PropertyValuesHolder实现了这样的效果。而AnimatorSet不仅能实现这样的效果,
同时也能实现更为精确的顺序控制。
ObjectAnimator animator1 = ObjectAnimator.ofFloat(this,"translationX",360f); ObjectAnimator animator2 = ObjectAnimator.ofFloat(this,"scaleX",1f,0f,1f); ObjectAnimator animator3 = ObjectAnimator.ofFloat(this,"scaleY",1f,0f,1f); AnimatorSet animatorSet = new AnimatorSet(); animatorSet.setDuration(1000); animatorSet.playTogether(animator1,animator2,animator3); animatorSet.start();
7.interpolators(插值器)
插值器是动画中一个非常重要的概念,通过插值器(Interpolators),可以定义动画变换速率,这一点非常类似物理中的加速度,其作用主要是控制目标变量的变化值进行对应的变换。
//自定义Interpolators动画过程public class DecelerateAccelerateInterpolator implements TimeInterpolator { @Override public float getInterpolation(float input) { float result; if (input <= 0.5) { result = (float) ((Math.sin(Math.PI*input))/2); }else { result = (float) ((2-Math.sin(Math.PI*input))/2); } return result; }}
- Android属性动画分析
- Android属性动画分析
- android属性动画分析
- Android属性动画深入分析
- Android属性动画深入分析
- 深入分析Android属性动画
- Android属性动画深入分析
- Android属性动画深入分析
- Android 动画分析之属性动画
- Android 属性动画的原理分析
- Android属性动画ValueAnimator源码简单分析
- Android属性动画ObjectAnimator源码简单分析
- Android属性动画AnimatorSet源码简单分析
- Android属性动画ObjectAnimator源码简单分析
- Android动画--属性动画
- android动画 -- 属性动画
- Android动画-属性动画
- Android动画【属性动画】
- MFC消息种类
- Hibernate中 Hql语句中包含中文 无法查询到结果的解决办法
- VBS脚本教程:连续的创建文件
- Hibernate不同版本创建SessionFactory
- 杭电ACM-HDU1004-Let the Balloon Rise
- Android属性动画分析
- VHDL状态机
- PHP Twig模版的tags详解(中文)
- Java增强for循环 (java中的冒号)
- oracle读取char(2)字符型数据
- 纽约大学Yann LeCun深度学习
- 站在巨人的肩膀上,C++开源库大全
- 编译内核模块之 Makefile
- Android中自定义属性的使用