zoukankan      html  css  js  c++  java
  • android中Animation动画的连续播放与播放完毕后停留在最后的状态

    我们做安卓应用的苦逼程序员们常常会需要用到Animation也就是动画。比如做地图功能的时候。我们在手机旋转时需要根据手机重力感应来调整地图的角度,让它上面的“北”一直指向地球的北面。。。
    好多人做动画的时候会遇到这么两个难题(我也曾经遇到过):
    1:动画执行完了一遍后又立刻恢复到了初始状态,或者动画只能不断循环动作。【问题:我想让动画动到某个位置或转到某个角度后停在那里,该如何做呢?】
    2:点击按钮一、动画从0度转到了10度,我再点击按钮二、需要动画从之前的10度位置再继续转到20度。再点击按钮三......【问题:如何让动画连续起来?而不是每次都有从0度开始转到10、再从0度开始转到20度......】

    针对上面两个问题我们来看看动画类,这里我拿RotateAnimation(旋转动画,其他动画有类似之处)来讲解:
    RotateAnimation(float fromDegrees,float toDegtees,float pivotX,float pivotY);
    这里面 :
    fromDegrees为旋转动画的起始角度
    toDegtees为旋转动画的结束角度
    pivotX和pivotY为旋转动画的锚点位置,也就是说我的动画是根据哪个顶点来旋转的。
    从参数来看,我们只要在一次动画执行完毕后记录当前动画转到了哪里,再在下次执行动画的时候将这个记录下来的位置传给fromDegrees就会发现你的动画接着上次的位置继续旋转了下去。这样我们就解决了问题2了。
    再看看问题1:想让动画执行完毕后固定在动画结束的那一帧上可以设置rotateAnimation.setFillAfter(true);方法。将值传为true就可以了。。。

    /**旋转的动画
         * @param mView            需要选择的View
         * @param startDegress    初始的角度【从这个角度开始】
         * @param degrees        当前需要旋转的角度【转到这个角度来】
         */
        public void showAnimation(View mView,int startDegress,int degrees) 
        {
            float centerX = mView.getWidth() / 2.0f;
            float centerY = mView.getHeight() / 2.0f;
            //这个是设置需要旋转的角度(也是初始化),我设置的是当前需要旋转的角度
            RotateAnimation rotateAnimation = new RotateAnimation(startDegress,degrees,centerX,centerY);//centerX和centerY是旋转View时候的锚点
            //这个是设置动画时间的
            rotateAnimation.setDuration(10);
            //动画执行完毕后是否停在结束时的角度上
            rotateAnimation.setFillAfter(true);
            //启动动画
            mView.startAnimation(rotateAnimation);
        }

    From:http://blog.csdn.net/zhtqmima/article/details/12910871

  • 相关阅读:
    C语言提供的位运算符
    JAVA反射改动常量,以及其局限
    直击中关村创业大街,新街头霸王来了
    bind() to 0.0.0.0:80 failed (98: Address already in use)
    Eclipse 快捷方式 指定 固定 workspace
    C++对象模型——Inline Functions(第四章)
    eclipse中安装freemarker插件及ftl使用freemarker编辑器
    迷茫了好一阵决定做WEB前端
    ios代理的使用,正向传值,逆向传值
    easyUI Tab href,content差别
  • 原文地址:https://www.cnblogs.com/niray/p/3920025.html
Copyright © 2011-2022 走看看