属性动画的几种实现方式

属性动画有两种实现方法,一个是在代码中实现,一个是在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文件后在里面写旋转动画:


在然后在MAinActivity中写方法

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

实现动画 【属性动画的几种实现方式】

    推荐阅读