最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Android自定义动画根据控件Y轴旋转动画(仿红包)
时间:2022-06-25 22:56:56 编辑:袖梨 来源:一聚教程网
这里给正在学安卓的小白们分享一个动画吧,用处挺多,代码也不多,还望各位大佬不要打击。
进入正题,先看看效果
效果很炫酷很美好
好了 来看代码吧 该说的都在代码注释里面 这个不用多说 代码极其简单
//自定义一个类继承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 */ @Override public 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 */ @Override protected 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(); }
相关文章
- 江南百景图碎金泉怎么样 12-26
- 江南百景图游宴廊怎么样 江南百景图游宴廊建筑介绍 12-26
- 江南百景图碎金泉怎么样 江南百景图碎金泉建筑介绍 12-26
- 炉石传说兑换码大全 12-26
- 重返未来1999趋光性研究夜幕之外怎么玩 趋光性夜幕之外活动介绍 12-26
- 光遇12.26大蜡烛在哪里 光遇12月26日大蜡烛位置攻略 12-26