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();