欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android--补间动画

程序员文章站 2022-03-18 13:43:25
...

旋转动画

RotateAnimation ra = new RotateAnimation(0
                        ,720
                        , Animation.RELATIVE_TO_SELF  //相对于自身的0.5
                        ,0.5f
                        ,Animation.RELATIVE_TO_SELF   //相对于自身的0.5
                        ,0.5f);
                ra.setDuration(800);
                ra.setRepeatCount(1);       //循环次数1次
                ra.setRepeatMode(Animation.REVERSE);  //反转
                imageView.startAnimation(ra);

透明度动画

    //参数1:起始透明度 参数2:结束透明度
    AlphaAnimation aa = new AlphaAnimation(1.0f, 0.5f);
    aa.setDuration(2000);
    //停留在动画执行完的状态
    //aa.setFillAfter(true);
    //设置重复次数 实际次数为传的实际参数+1 常量INFINITE代表无限次
    aa.setRepeatCount(Animation.INFINITE);
    //设置重复模式 常量REVERSE是类似钟摆的过度变化效果
    aa.setRepeatMode(Animation.REVERSE);
    //让iv控件执行此动画
    iv.startAnimation(aa);

旋转动画

    ScaleAnimation sa = new ScaleAnimation(1, 2
            , 1, 2
            , Animation.RELATIVE_TO_SELF
            , 0.5f
            , Animation.RELATIVE_TO_SELF
            , 0.5f);
    sa.setDuration(2000);
    iv.startAnimation(sa);

缩放动画

    ScaleAnimation sa = new ScaleAnimation(1, 2
            , 1, 2
            , Animation.RELATIVE_TO_SELF
            , 0.5f
            , Animation.RELATIVE_TO_SELF
            , 0.5f);
    sa.setDuration(2000);
    iv.startAnimation(sa);

平移动画(顺便加上让元素平移出屏幕然后停留在屏幕外面)

    //模拟将图像移出手机屏幕
    //获取当前屏幕的宽度
    int width = getWindowManager().getDefaultDisplay().getWidth();
    //创建平移补间动画对象 参数1:x起始点 参数2:x结束点 参数3:y起始点 参数4:y结束点
    TranslateAnimation ta = new TranslateAnimation(0, width
            , 0, 0);
    //设置停留在平移后的状态
    ta.setFillAfter(true);
    ta.setDuration(2000);
    iv.startAnimation(ta);

多种补间动画同时执行

    AlphaAnimation aa = new AlphaAnimation(1.0f, 0.5f);
    aa.setDuration(2000);
    TranslateAnimation ta = new TranslateAnimation(0, 100
            , 0, 100);
    ta.setDuration(2000);
    ScaleAnimation sa = new ScaleAnimation(1, 2
            , 1, 2
            , Animation.RELATIVE_TO_SELF
            , 0.5f
            , Animation.RELATIVE_TO_SELF
            , 0.5f);
    sa.setDuration(2000);
    AnimationSet as = new AnimationSet(false);
    as.addAnimation(aa);
        as.addAnimation(ta);
        as.addAnimation(sa);
//      as.setDuration(2000);
        iv.startAnimation(as);