Android属性动画 - 平移动画

1、简介

上一篇中,详细讲解了Android补间动画 - 缩放动画的具体实现,补间动画的其他动画实现方式很类似,能够将一个掌握透彻,其他也就迎刃而解,本篇文章主要讲解属性动画-平移动画的具体实现,同时也会概况属性动画的其他几种类型,相信看完本篇文章会对属性动画有一个全面的认识。

话不多说,我们仍然以一个实例来讲解,具体效果图如下:

2、具体实现

对于属性动画的实现,我们可以不用在xml文件中实现具体动画效果,直接通过代码即可实现。

上图中,xml布局文件非常简单,一个button和一个view,这里就不再粘贴布局文件,仅仅提供java中的关键代码。

// 属性动画-平移
private void startPopsAnimTrans(){
   if(objectAnimatorX == null){
       float [] x= {0f,60f,120f,180f};
       objectAnimatorX = ObjectAnimator.ofFloat(scaleAnimView,"translationX", x);
       objectAnimatorX.setDuration(2000);
   }
   objectAnimatorX.start();
}

代码非常简单,仅仅几行即可实现,下面我们来分析ofFloat几个参数具体代表什么意思?

  • 第一个参数

第一个参数,很明显,就是需要将动画作用于哪个对象上面即哪个View上面,直接传对应的View即可。

  • 第二个参数

第二个参数为一个字符串,表示要实现的属性动画,可取值有:

alpha                       // 实现渐变效果
rotation                    // 实现旋转旋转效果
translationX             // 实现水平移动效果(左或右移动)
translationY             // 实现纵向移动效果(向上或者向下移动)
scaleX                     // 实现轴X缩放效果(放大或者缩小)
scaleY                     // 实现轴Y缩放效果(放大或者缩小)

  • 第三个参数

第三个参数表示动画的具体效果,第三个参数是一个数组,数组的元素可以是1个、2个、3个或多个,下面我以当第二个参数为translationX进行具体说明:

当float [] x= {60f},view会在原有的基础上向右平移60px;

当float [] x= {0f, 60f},view 会从0点(即view在布局中最初的位置)开始向右平移60px;

当float [] x= {0f, 60f, 0f},view从0点开始向右平移60px,在回到0点位置;

当float [] x= {0f, 60f, 80f, 100f, ……}, view从0点开始向右平移60px再平移80px,再平移100px ……;

需要注意的是,对于平移可以是大于1或小于-1这样的数,如果当为alpha时,取值区间为0-1。

属性动画与补间动画有一个重要区别就是,补间动画对View的操作并不会改变View的实际位置,例如当对View添加点击事件,只有最开始的位置点击有效,但是属性动画,对View的位置做了实际的变化,点击的位置会随View的移动而移动。

3、其他案例

很多情况下,我们想让一个按钮能够随着某一系列坐标点进行移动,这就涉及到多个属性动画的组合,例如下图效果:

具体代码如下:

private void startPopsAnimTrans(){
   if(objectAnimatorX == null){
      float [] x= {0f,60f,120f, 240f};
      float [] y= {0f,30f,220f,90f};
      objectAnimatorX = ObjectAnimator.ofFloat(scaleAnimView,"translationX", x);
      objectAnimatorX.setDuration(2000);
      objectAnimatorY = ObjectAnimator.ofFloat(scaleAnimView,"translationY", y);
      objectAnimatorY.setDuration(2000);
   }
   objectAnimatorX.start();
   objectAnimatorY.start();
}

这里对Android属性动画中的平移动画讲解到此,相信通过此篇文章,对平移动画的使用有全面的了解。

发布了74 篇原创文章 · 获赞 17 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/u010349644/article/details/101151809