一、詳解高德地圖實現波紋擴散動畫(替代官網所給demo擴散差的動畫效果)

1、第一步確定地圖位置,實現擴散動畫(高德地圖傳遞Circle 就不寫了)

注意點:1 透明度160到0;總時間2.5秒,半徑擴散0-500

 

private void Scalecircle(final Circle ac) {
    ValueAnimator vm = ValueAnimator.ofFloat(0,500);
    vm.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator animation) {

        }
    });
    vm.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            float curent = (float) animation.getAnimatedValue();
            ac.setRadius(curent);
        }
    });
    ValueAnimator vm1 = ValueAnimator.ofInt(160,0);
    vm1.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            int color = (int) animation.getAnimatedValue();
            ac.setFillColor(Color.argb(color, 88, 157, 255));
        }
    });
    AnimatorSet set = new AnimatorSet();
    set.play(vm).with(vm1);
    set.setDuration(2500);
    set.setInterpolator(interpolator);
    set.start();
}

 

 

第二步驟:3秒循環一圈,調用rxjava實現

private Disposable scalecircle(int delay,final Circle ac){
        return Flowable.interval(delay, 3, TimeUnit.SECONDS)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Consumer<Long>() {
                    @Override
                    public void accept(Long aLong) throws Exception {
                        Scalecircle(ac);
                    }
                });
}

第三步驟:調用的地方需要調用兩次,並設置間隔時間行程波紋環環相扣

 

private RxManager rxManager=new RxManager(); 
Disposable dsbone= scalecircle(0,c);
rxManager.add(dsbone);
Disposable dsbtwo= scalecircle(1,ac);
rxManager.add(dsbtwo);

 

第四步驟:最後暫停動畫,則接觸訂閱關係即可

rxManager.clear();

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章