ValueAnimator Как, если уже работающий, прекратит делать какие-либо новые анимации до его конца как очередь или что-то - PullRequest
0 голосов
/ 10 ноября 2019

ребята, я пытаюсь сделать анимацию в цикле, но я хочу, чтобы машина, когда она начинала анимацию, перестала брать новые анимации, а когда финишировала, анимация начиналась не тогда, когда она запускалась просто как очередь или что-то еще помогающее?

Мой код

public synchronized ValueAnimator moveVechile(final LatLng finalPosition, final LatLng startPosition) {

        final ValueAnimator valueAnimator = ValueAnimator.ofFloat((float) 0.01, (float) 1.5);

            valueAnimator.setInterpolator(new LinearInterpolator());
            valueAnimator.setDuration(2600);
            valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
                @Override
                public void onAnimationUpdate(ValueAnimator valueAnimator) {
                    float t = Float.parseFloat(valueAnimator.getAnimatedValue().toString());

                    LatLng currentPosition = new LatLng(
                            startPosition.latitude * (1 - t) + (finalPosition.latitude) * t,
                            startPosition.longitude * (1 - t) + (finalPosition.longitude) * t);
//                markerDriver.setAnchor(0.5f, 0.5f);
//                markerDriver.setRotation(markerDriver.getRotation());
                    markerDriver.setPosition(currentPosition);

                }
            });
            valueAnimator.addListener(new Animator.AnimatorListener() {

                @Override
                public void onAnimationStart(Animator animation) {
                    Toast.makeText(activity, "Start Animate: "+animation.isStarted(), Toast.LENGTH_SHORT).show();
                }

                @Override
                public void onAnimationRepeat(Animator animation) {

                }

                @Override
                public void onAnimationEnd(Animator animation) {
                    Toast.makeText(activity, "End Animate: "+animation.isRunning(), Toast.LENGTH_SHORT).show();
                }

                @Override
                public void onAnimationCancel(Animator animation) {
                    // ...
                }
            });


            return valueAnimator;
    }

1 Ответ

0 голосов
/ 10 ноября 2019

Я делаю HashMap

    public final static HashMap<String, String> VhecileCalled=new HashMap<String, String>();

И затем я помещаю это

@Override
            public void onAnimationStart(Animator animation) {
                VhecileCalled.put("started", "2");
                Toast.makeText(activity, "Start Animate: "+animation.isStarted(), Toast.LENGTH_SHORT).show();

            }

            @Override
            public void onAnimationEnd(Animator animation) {
                VhecileCalled.put("started", "1");
                Toast.makeText(activity, "End Animate: "+animation.isRunning(), Toast.LENGTH_SHORT).show();
            }

И onCreate или на CreateView Я сделал это, когда я вызываю функцию, чтобы не сбить приложение

                    VhecileCalled.put("started", "1");

Затем, когда я вызываю свою функцию, которая выполняет анимацию

    if (VhecileCalled.get("started").equals("1")){
                rotateMarker(markerDriver,markerDriver.getPosition(),newlatlng);
                animatorSet.playTogether(
//                    rotateMarker(Float.isNaN(bearingangle) ? -1 : bearingangle, markerDriver.getRotation()),
                        moveVechile(newlatlng, markerDriver.getPosition())
                );
            }else {
                Toast.makeText(activity, "Animation already called", Toast.LENGTH_SHORT).show();
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...