Android自定义动画根据控件Y轴旋转动画(仿红包)

时间:2021-05-20

这里给正在学安卓的小白们分享一个动画吧,用处挺多,代码也不多,还望各位大佬不要打击。

进入正题,先看看效果

效果很炫酷很美好

好了 来看代码吧 该说的都在代码注释里面 这个不用多说 代码极其简单

//自定义一个类继承Animation(android.view.animation.Animation)抽象类public class MyAnimation extends Animation { // 先定义成员变量 //X轴的中心坐标 int center_X; //Y轴的中心坐标 int center_Y; // 初始化Camera Camera camera = new Camera();}

接下来要注意了

重写initialize()方法

/** * 在initialize对变量进行初始化* @param width* @param height* @param parentWidth* @param parentHeight*/@Overridepublic void initialize(int width, int height, int parentWidth, int parentHeight) { super.initialize(width, height, parentWidth, parentHeight); //获取X Y 中心点坐标 center_X = width/ 2; center_Y = height / 2; //动画的执行时间,3000毫秒 setDuration(3000L); setInterpolator(new AccelerateInterpolator());}

写完这些以后就到了最关键的核心代码了

/** * 在applyTransformation通过矩阵修改动画* 这里是自定义动画的核心,动画执行的过程中一直在回调这个方法* 每次回调这个方法interpolatedTime都会改变* @param interpolatedTime* @param t*/@Overrideprotected void applyTransformation(float interpolatedTime, Transformation t) { final Matrix matrix = t.getMatrix(); //储蓄 camera.save(); //中心是绕Y轴旋转,这里可以自行设置其他轴 camera.rotateY(1080 * interpolatedTime); //加在变换矩阵上 camera.getMatrix(matrix); //设置翻转中心点 matrix.preTranslate(-center_X, -center_Y); matrix.postTranslate(center_X, center_Y); //恢复 camera.restore();}

怎么样 看完以后是不是了解了很多

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章