先上個效果圖,以免大家跑錯地了。
專注于為中小企業(yè)提供成都做網(wǎng)站、成都網(wǎng)站制作服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)淇縣免費做網(wǎng)站提供優(yōu)質的服務。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了近1000家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設實現(xiàn)規(guī)模擴充和轉變。嗯,除了只能錄三秒,其他沒啥問題。
下面分析一下怎么實現(xiàn)上面這個效果。
理性分析后我們可以看到是幾個小球繞著一個圓進行運動,那這里面的重點我們看看什么。
繪制五個球,沒什么難度,讓球繞圓進行運動,這個好像我們沒有見到是怎么去實現(xiàn)了,那下就說這個。
從本質上看,球繞圓運動,其實我們可以看作是一個物體繞指定的路勁運動,那我們就有下面幾個東西需要說一下:
1:Path
2:ValueAnimator
3:PathMeasure
前兩個大家應該都見過,一個是路徑,就是可以自己繪制路線的一個工具,一個是動畫,用來指定物體運動的工具,那第三個是一個關于測量路徑的類。
下面說說PathMeasure的用法。
首先是初始化:
pathMeasure = new PathMeasure(path, false);
兩個參數(shù)第一個,第一個就是我們需要用到的路徑,第二個參數(shù)意思就是這個以路徑頭尾是否相連來計算結果,通常我們就寫false就行,不會有問題。
然后是用法:
private float[] mCurrentPositionOne = new float[2]; float value = (Float) animation.getAnimatedValue(); pathMeasure.getPosTan(value, mCurrentPositionOne, null); 我們可以看見把一個二維數(shù)組放到了getPosTan這個方法里面,然后還有一個animation,這里的animation來自哪里呢?來自這里:valueAnimatorOne.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { // 獲取當前點坐標封裝到mCurrentPosition float value = (Float) animation.getAnimatedValue(); pathMeasure.getPosTan(value, mCurrentPositionOne, null); postInvalidate(); } });