帶節點進度條的實現方法不止一個,但是如果要實現圖中這種效果的,初步看好像還不簡單。進度條的形狀不規則、背景是漸變顏色、節點上面還有個勾。這裡提供一個很簡單的思路,簡單的都不好意思說了……
為了實現這個效果,我們需要三張圖片,就是下面這三張。
看到這裡可能你已經知道要怎麼做了,三張圖片分別是:
1.進度條填充部分的背景,帶漸變顏色帶節點小勾
2.進度條未填充部分的背景,純色
3.進度條外框背景,是一張鏤空圖,顏色和進度條外的顏色一致
注意這三張圖片的大小必須一致,將這三張圖片疊加到一起就是我們的進度條了。至於進度條的動畫,我們只要對第二層的那張圖片實現一個屬性動畫就可以了:
public void setProgress(float stage) {
int progressWidth = ivProgress.getWidth();
ObjectAnimator animator = ObjectAnimator.ofFloat(ivProgress, "translationX", stage * progressWidth);
animator.setDuration((int) (Math.abs(stage - currentStage) * 1000));
animator.start();
currentStage = stage;
}
複製程式碼
至於如何控制到哪一個節點,這個可以自己拿尺子量一下,多試幾次,上面程式碼中的 stage 就是這個作用,它從這裡取值:
//不同階段進度條所在位置
public static final float STAGE0 = 0f;
public static final float STAGE1 = 0.046f;
public static final float STAGE2 = 0.285f;
public static final float STAGE3 = 0.523f;
public static final float STAGE4 = 0.761f;
public static final float STAGE5 = 1f;
複製程式碼
最後看一下效果。
這樣就已經實現了一個看上去有點複雜的進度條了,妥妥的。