您的位置:首页 > 其它

自定义动画

2016-02-04 15:07 190 查看
自定义动画,四种动画效果都是要继承 Animation

public class CustomAnimation extends Animation {

/**
* 粗略测试一下,宽高 *3 ,如果父容器宽高是屏幕大小,则是屏幕大小
* @param width        该容器的宽
* @param height       该容器的高
* @param parentWidth  父容器的宽
* @param parentHeight 父容器的高
*/
@Override
public void initialize(int width, int height, int parentWidth, int parentHeight) {
Log.i("test", width + "        " + height + "     " + parentWidth + "        " + parentHeight);
super.initialize(width, height, parentWidth, parentHeight);
}

/**
* 启动此类就会不断的执行 applyTransformation 方法
*
* @param interpolatedTime 不管设定动画效果为多少秒, 它都会从  0 执行 到 1,float型, 用此参数就可以设置出动画效果
* @param t
*/
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {

Log.i("test", interpolatedTime + " ");

//设置透明度
//        t.setAlpha(interpolatedTime);
//设置旋转动画, 300,300  会一下子跳到 300,300坐标
//        t.getMatrix().setTranslate(300, 300);

//设置旋转动画, 慢慢的旋转到 300,300坐标(指标秒数内)
//        t.getMatrix().setTranslate(300 * interpolatedTime, 300 * interpolatedTime);

//左右摇摆 ,  上下不动
//(float) (Math.sin(interpolatedTime*20)*50) x轴根据数学公式设定其左右摇摆, y轴 为0,表示不动
t.getMatrix().setTranslate((float) (Math.sin(interpolatedTime * 20) * 50), 0);
super.applyTransformation(interpolatedTime, t);
}


在MainActivity中:

CustomAnimation ca;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

ca = new CustomAnimation();
ca.setDuration(1000);
findViewById(R.id.id).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
v.startAnimation(ca);
}
});
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: