属性动画有两种实现方法,一个是在代码中实现,一个是在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();实现动画