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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM