属性动画的几种实现方式

属性动画有两种实现方法,一个是在代码中实现,一个是在XML文件里实现,下面我就跟大家唠唠这些

首先是在代码中实现:

几个效果分别是:

1.透明动画:

//得到ObjectAnimator对象,参数:1.view控件,代表你要修改的那个控件属性 2.字符串,什么类型的动画 3.控件修改的参数float数组

ObjectAnimator aipha = ObjectAnimator.ofFloat(imageView,"alpha", new float[]{0.0f, 0.2f, 0.4f, 0.6f, 0.8f, 1.0f});
//设置动画的执行时间
aipha.setDuration(2000);
//设置动画执行的模式
aipha.setRepeatMode(ObjectAnimator.RESTART);
//设置动画执行次数,注意:执行一次后,再次执行一次
aipha.setRepeatCount(1);
//开始动画
aipha.start();
	2.旋转动画:
 
  
ObjectAnimator rotationY = ObjectAnimator.ofFloat(imageView, "rotation", new float[]{0f,90f, 180f, 270f, 360f});
//设置动画的执行时间
rotationY.setDuration(2000);
//设置动画执行的模式
rotationY.setRepeatMode(ObjectAnimator.RESTART);
//设置动画执行次数,注意:执行一次后,再次执行一次
rotationY.setRepeatCount(1);
//开始动画
rotationY.start();
3. 缩放动画:
ObjectAnimator scalex = ObjectAnimator.ofFloat(imageView, "scaleX", new float[]{1f, 2f, 3f, 4f, 5f, 6f, 7f, 6f, 5f, 4f, 3f, 2f, 1f});
scalex.setDuration(2000);
scalex.setRepeatMode(ObjectAnimator.RESTART);
scalex.setRepeatCount(1);
scalex.start();
4.平移动画:

ObjectAnimator translationY = ObjectAnimator.ofFloat(imageView, "translationX", new float[]{10f, 20f, 30f, 40f, 50f, 40f, 30f, 20f, 10f});
translationY.setDuration(2000);
translationY.setRepeatMode(ObjectAnimator.RESTART);
translationY.setRepeatCount(1);
translationY.start();
	5最后还有结合动画:
 
  
AnimatorSet set=new AnimatorSet();
ObjectAnimator oa = ObjectAnimator.ofFloat(imageView,"alpha", new float[]{0.0f, 0.2f, 0.4f, 0.6f, 0.8f, 1.0f});
oa.setDuration(3000);
ObjectAnimator oa2 = ObjectAnimator.ofFloat(imageView, "translationX", new float[]{10f, 20f, 30f, 40f, 50f, 40f, 30f, 20f, 10f});
oa2.setDuration(2000);
//set.playTogether(oa,oa2);//几个效果一起执行
set.playSequentially(oa,oa2);//效果有顺序执行
set.start();
然后就是在XML中实现
    这里我就不一一说明了我就拿旋转举个例子:
	首先就是建XML类,这里不是在Layout中建而是在res下新建一个包如下图animator包,在Studio中也无需建包,如下图二选择,然后出现图三,把第二个框选成如图样式就行
	图1:
	
2:

图3:

然后建好XML文件后在里面写旋转动画:

<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
    android:propertyName="rotationX"
    android:duration="3000"
    android:repeatCount="1"
    android:repeatMode="restart"
    android:startOffset="0"
    android:valueFrom="360.0">

objectAnimator>
在然后在MAinActivity中写方法

/就是调用动画XML文件
//此处用XML的形式,先进行引用
Animator animator = AnimatorInflater.loadAnimator(this, R.animator.object);
//使动画对象和要做的动画控件关联
animator.setTarget(imageView);
//开启动画
animator.start();
实现动画

你可能感兴趣的:(Android)