关于TranslateAnimation()的参数问题
2015-10-13 14:31
471 查看
TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta)是Android中最常用的一个动画方法,第一次用花了好多时间才弄懂里面的几个参数的意思。记录一下,以备查阅!
Delta,表示的是差值,即后一个和前一个的差值。XDelta即表示在X方向上的差值,YDelta表示在Y方向的差值。若XDelta>0,则说明控件向右侧发生移动,否则向左侧移动,Y轴方向同理。
几个参数的意思:
fromXDelta:即控件在X轴上移动之前的差值,为什么是Delta呢?因为在此之前,该控件可能已经发生过了位移,因此它已经偏离了控件最初始的位置。因此采用了距离最初始位置的偏移量。而这个初始位置是是在调用这个方法之前定义的,比如:
Matrix matrix
= new Matrix();
matrix.postTranslate(0, 0);
这里用postTranslate方法定义初始位置为(0,0),初始位置设定之后一直是这个值,不会改变。
toXDelta:相同道理,想要移动的终点位置距离最初始位置的偏移量。记住,一定不要把这个最初始位置当成是移动开始前控件的位置,否则将会发生错误移动。
后面两个参数表示Y方向上的,和X方向上的同理。需要说明的是,这个是绝对偏移量,是以像素为单位进行计算的。
下面是一个例子,只涉及X方向移动:
Matrix matrix = new Matrix();
matrix.postTranslate(0, 0);//设置初始位置
Animation animation = null;
int one = 1000;
{
switch (arg0) {
case 0:
animation = new TranslateAnimation(one, 0, 0, 0);
//从位置1移动到位置0,开始位置为(one,0),移动之前的位置(one,0)到初始点(0,0)的X轴差值为one,故第一个参数值为one。移动之后的位置为(0,0),与初始位置(0,0)X轴差值为0,故第二个参数值为0.
break;
case 1:
animation = new TranslateAnimation(0, one, 0, 0);
//从位置0移动到位置1,开始位置为(0,0),与初始位置(0,0)X轴上的差值为0,故第一个参数为0.移动之后的位置为(one,0),与初始位置(0,0)X轴上的差值为one,故第二个参数为one。
break;
}
}
currIndex = arg0;
animation.setFillAfter(true);// True:图片停在动画结束位置
animation.setDuration(200);
cursor.startAnimation(animation);
描述不对之处,请指正!
Delta,表示的是差值,即后一个和前一个的差值。XDelta即表示在X方向上的差值,YDelta表示在Y方向的差值。若XDelta>0,则说明控件向右侧发生移动,否则向左侧移动,Y轴方向同理。
几个参数的意思:
fromXDelta:即控件在X轴上移动之前的差值,为什么是Delta呢?因为在此之前,该控件可能已经发生过了位移,因此它已经偏离了控件最初始的位置。因此采用了距离最初始位置的偏移量。而这个初始位置是是在调用这个方法之前定义的,比如:
Matrix matrix
= new Matrix();
matrix.postTranslate(0, 0);
这里用postTranslate方法定义初始位置为(0,0),初始位置设定之后一直是这个值,不会改变。
toXDelta:相同道理,想要移动的终点位置距离最初始位置的偏移量。记住,一定不要把这个最初始位置当成是移动开始前控件的位置,否则将会发生错误移动。
后面两个参数表示Y方向上的,和X方向上的同理。需要说明的是,这个是绝对偏移量,是以像素为单位进行计算的。
下面是一个例子,只涉及X方向移动:
Matrix matrix = new Matrix();
matrix.postTranslate(0, 0);//设置初始位置
Animation animation = null;
int one = 1000;
{
switch (arg0) {
case 0:
animation = new TranslateAnimation(one, 0, 0, 0);
//从位置1移动到位置0,开始位置为(one,0),移动之前的位置(one,0)到初始点(0,0)的X轴差值为one,故第一个参数值为one。移动之后的位置为(0,0),与初始位置(0,0)X轴差值为0,故第二个参数值为0.
break;
case 1:
animation = new TranslateAnimation(0, one, 0, 0);
//从位置0移动到位置1,开始位置为(0,0),与初始位置(0,0)X轴上的差值为0,故第一个参数为0.移动之后的位置为(one,0),与初始位置(0,0)X轴上的差值为one,故第二个参数为one。
break;
}
}
currIndex = arg0;
animation.setFillAfter(true);// True:图片停在动画结束位置
animation.setDuration(200);
cursor.startAnimation(animation);
描述不对之处,请指正!
相关文章推荐
- Android 动画之AlphaAnimation应用详解
- Android实现动画效果详解
- Android动画之3D翻转效果实现函数分析
- BaseAnimation是基于开源的APP,致力于收集各种动画效果(最新版本1.2)
- Android的屏幕切换动画
- Android view动画问题
- Android动画之Drawable Animation
- 收集android上开源的酷炫的交互动画和视觉效果
- 动画的简单介绍
- 理解 TranslateAnimation动画的理解
- Interpolator的几种属性
- Android动画之Tween动画实现
- Android Animation动画详解(一): 补间动画
- Android Animation动画实战(一): 从布局动画引入ListView滑动时,每一Item项的显示动画
- Android Animation动画实战(二):从屏幕底部弹出PopupWindow
- Android开发之视图动画基础
- 【Android动画】之Tween动画 (渐变、缩放、位移、旋转)
- 【Android动画】之Frame动画
- Android动画学习笔记-Android Animation
- 为所有activity加上过场动画overridePendingTransition