美文网首页Android开发Android开发经验谈程序员
安卓自定义动画根据控件Y轴旋转动画 仿红包

安卓自定义动画根据控件Y轴旋转动画 仿红包

作者: 忞鹿 | 来源:发表于2018-03-27 20:12 被阅读230次

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

    进入正题,先看看效果

    效果很炫酷很美好

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

    //自定义一个类继承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();

    }

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

    要是感觉写的不错就多支持支持吧  第一次发表  很紧张嘿嘿

    相关文章

      网友评论

        本文标题:安卓自定义动画根据控件Y轴旋转动画 仿红包

        本文链接:https://www.haomeiwen.com/subject/kooscftx.html