您的位置:首页 > 移动开发 > Android开发

Android自定义XY(对角线)动画

2015-07-29 20:58 501 查看
继承Animation类

覆写applyTransformation(),initialize()

public class ERTXYAnimation extends Animation {
/**  控件 */
private View mView = null;
/** 控件fromX */
private int mFormX = 0;
/** 控件fromY */
private int mFormY = 0;
/** 控件toX */
private int mToX = 0;
/** 控件toY */
private int mToY = 0;

public ERTXYAnimation(View view, float fromX, float fromY, float toX,
float toY) {
this.mView = view;
this.mFormX = (int) fromX;
this.mToX = (int) toX;
this.mFormY = (int) fromY;
this.mToY = (int) toY;
}
//在绘制动画的过程中会反复的调用applyTransformation 函数,每次调用参数interpolatedTime值都会变化,该参数从0渐变为1,当该参数为1时表明动画结束。通过参数Transformation 来获取变换的矩阵(matrix),通过改变矩阵就可以实现各种复杂的效果。
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
int x = (int) (mFormX + ((mToX - mFormX) * interpolatedTime));
int y = (int) (mFormY + ((mToY - mFormY) * interpolatedTime));
ViewGroup.LayoutParams l = mView.getLayoutParams();
if (l instanceof AbsoluteLayout.LayoutParams) {
AbsoluteLayout.LayoutParams al = (AbsoluteLayout.LayoutParams) l;
al.x = x;
al.y = y;
mView.setLayoutParams(al);
mView.invalidate();//直接调用invalidate()方法,请求重新draw(),但只会绘制调用者本身。
} else {
Utils.printLog("ERTXYAnimation", "Not AbsoluteLayout!  This Class can not handle it!!");
return;
}

}

//这是一个回调函数告诉Animation目标View的大小参数,在这里可以初始化一些相关的参数,例如设置动画持续时间、设置Interpolator、设置动画的参考点等。
@Override
public void initialize(int width, int height, int parentWidth,
int parentHeight) {
super.initialize(width, height, parentWidth, parentHeight);
}

}


Android中的补间动画分为下面几种:

(1)AlphaAnimation :透明度改变的动画。

(2)ScaleAnimation:大小缩放的动画。

(3)TranslateAnimation:位移变化的动画。

(4)RotateAnimation:旋转动画。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android