TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta)
这个是我们最常用的一个构造方法,
float fromXDelta:这个参数表示动画开始的点离当前View X坐标上的差值;
float toXDelta, 这个参数表示动画结束的点离当前View X坐标上的差值;
float fromYDelta, 这个参数表示动画开始的点离当前View Y坐标上的差值;
float toYDelta)这个参数表示动画开始的点离当前View Y坐标上的差值;
如果view在A(x,y)点 那么动画就是从B点(x+fromXDelta, y+fromYDelta)点移动到C 点(x+toXDelta,
y+toYDelta)点,
现在有个问题就是动画结束后它会返回原来的点(x,y),我上网查了点资料 说通过设置setFillAfter
(true),可以解决这个问题,但是设置后view的焦点却没有传过来。
我的解决方案是先将view移动到C点即设置
AbsoluteLayout.LayoutParams params1=new AbsoluteLayout.LayoutParams( Viewwidth,
Viewheight,x+toXDelta,y+toYDelta);
setLayoutParams(params1);
然后在C处移动。这个就要设置好TranslateAnimation
TranslateAnimation(fromXDelta- toXDelta,0,fromYDelta-toYDelta,0);
如果有哪个大牛有好的建议,麻烦提出来