关于TranslateAnimation几个构造函数的理解

来源:互联网 发布:换了网络之后连不上 编辑:程序博客网 时间:2024/05/16 06:36
       在android动画中,最常用的一个莫不是TranslateAnimation了,这个类主要负责实现控件的动态位移,经常被用做指示器的移动动画。比如qq安卓客户端的指示器,如下图。
 
       关于TranslateAnimation几个构造函数的参数意义,曾困惑我不少时间,参考官方文档和网上的讲解,通过试验总结出一些自己的理解,如果有误敬请指正。
       TranslateAnimation共有三个构造函数,分别是:

其中,我们最常用的是后两个,现在主要想说明一下我对后两个函数参数的理解。
        先说第二个构造函数:TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, floattoYDelta)。
        Delta,顾名思义表示的是一个后一个和前一个的差值。XDelta即表示在X方向上的差值,同理YDelta表示在Y方向的差值。若XDelta>0,则说明控件向右侧发生移动,否则向左侧移动,Y轴方向是相同的道理。现在来说下各个参数的意思:
        fromXDelta:控件的开始移动前的位置,为什么是Delta呢?因为在此之前,该控件可能已经发生过了位移,因此它已经偏离了控件最初始的位置。因此采用了距离最初始位置的偏移量。
        toXDelta:相同道理,想要移动的终点位置距离最初始位置的偏移量。记住,一定不要混淆的是,不要把这个最初始位置当成是移动开始前控件的位置,否则将会发生错误移动。
        后面两个参数表示Y方向上的,和X方向上的同理。需要说明的是,这个是绝对偏移量,是以像素为单位进行计算的。
        再来说说第三个构造函数。
        当X方向或者Y方向上的Type选择为Animation.ABSOLUTE时候,表示为绝对像素,此时XValue和YValue参数的含义和第二个构造函数相同。
        而当X方向或者Y方向上的Type选择为Animation.RELATIVE_TO_SELF或者 Animation.RELATIVE_TO_PARENT时候,则表示相位移量了,举个例子来说,如果在X方向上选择Animation.RELATIVE_TO_SELF,那么当XValue=1.0f时,则偏移量为一个自身宽度。如果在X方向上选择Animation.RELATIVE_TO_PARENT时,则偏移量为一个父控件宽度。Y方向是相同的道理,只是把宽度换成了高度而已。
原创粉丝点击