安卓属性动画一

来源:互联网 发布:梦幻西游mac版安装教程 编辑:程序博客网 时间:2024/05/18 02:50

1、概述
Android框架提供了两种动画系统:属性动画和视图动画。这两种动画系统都有变化的选择,但是总的来说,属性动画系统是更好的选择,因为它更加灵活,并提供了更多的特性。
属性动画系统是一个强大的框架,它允许你动画几乎所有的东西。例如一个对象在屏幕中的位置,要动画多久,和动画之间的距值。

 通常我们要操作的属性为: rotationX、rotationY 旋转(以x轴或y轴) scaleX、scaleY 缩放 translationX、translationY 平移 X、Y 坐标 alpha 透明度

1、ObjectAnimator(针对于某个组件)
单个动画:

ObjectAnimator.ofFloat(v,"rotationX",0.0f,360.0f).setDuration(5000).start();//这里是图片围绕x轴进行旋转

组合多个动画:

     PropertyValuesHolder propertyValuesHolder = PropertyValuesHolder.ofFloat("alpha",1f,0f,1f);       PropertyValuesHolder propertyValuesHolder1 = PropertyValuesHolder.ofFloat("scaleX",1f,0f,1f);         PropertyValuesHolder propertyValuesHolder2 = PropertyValuesHolder.ofFloat("scaleY",1f,0f,1f);       ObjectAnimator.ofPropertyValuesHolder(v,propertyValuesHolder,propertyValuesHolder1,propertyValuesHolder2).setDuration(3000).start();         //这里的动画是一个图片的缩放,同时伴随着alpha的变化。注意这里使用的是PropertyValuesHolder来添加动画。

2、ValueAnimator(不针对于某有一个组件)
和ObjectAnimator用法很类似,简单看一下用view垂直移动的动画代码:
自由落体示例:

     final View view = v;         DisplayMetrics displayMetrics = new DisplayMetrics();         getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);         //定义一个动画         ValueAnimator valueAnimator = ValueAnimator.ofFloat(view.getY(),displayMetrics.heightPixels).setDuration(500);         //监听动画的每一个动作         valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {          @Override          public void onAnimationUpdate(ValueAnimator animation) {              view.setTranslationY((Float) animation.getAnimatedValue());             }          });          valueAnimator.start();
原创粉丝点击