Анимация в андроид - PullRequest
       4

Анимация в андроид

1 голос
/ 16 сентября 2011

Я хочу анимировать два отдельных вида (наложения) в Android. Я делаю это с помощью анимации API, как показано ниже:

Animation animation = AnimationUtils.loadAnimation(
            getContext(), R.anim.slide_in
        );

    animation.setAnimationListener(new RunnableExecutorAnimationListener(
            null, 
            null, 
            new Runnable()
            {
                @Override
                public void run()
                {
                    overlay.setVisibility(VISIBLE);
                    invalidate();
                }
            }
        )
    );

    overlay.startAnimation(animation);

Я хочу, чтобы эти две анимации вида происходили как единое целое. Даже если продолжительность анимации останется неизменной, они будут двигаться раздельно. Можно ли этого избежать? и как мы можем достичь этого, чтобы анимация выглядела как единое целое?

1 Ответ

0 голосов
/ 23 января 2013

Их несколько способов достижения анимации.Используйте любое из следующего, которое соответствует вашим потребностям1. AnimationDrawable : в основном это будет заменять изображения, добавленные в кадр, помните, что это следует использовать только в том случае, если у вас есть изображения меньшего и меньшего размера или вы можете столкнуться с недостатком памяти

    AnimationDrawable animation = new AnimationDrawable();
    animation.addFrame(getResources().getDrawable(R.drawable.image_1), 1000);
    animation.addFrame(getResources().getDrawable(R.drawable.image_2), 1000);

    YOUR_IMAGE_VIEW.setBackgroundDrawable(animation);   
    animation.start();

    animation.stop();
  1. Использование анимированного XML-файла

anim / fadein.xml

    <?xml version="1.0" encoding="utf-8"?>
    <alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000"
    android:fromAlpha="0.0"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:toAlpha="1.0" />

anim / fadeout.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000"
    android:fromAlpha="1.0"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:toAlpha="0.0" />

В коде:

    private Animation animationFadeIn;
    animationFadeIn = AnimationUtils.loadAnimation(this,
            R.anim.fadein);
    VIEW_YOU_WANT_TO_APPLY_ANIMATION.startAnimation(animationFadeIn);

сделайте то же самое для fade_out и присоедините его к тому же представлению, когда этого требует логика вашего приложения.

Упомянутые вами методы являются частью интерфейса AnimationListenerиспользуйте этот интерфейс, только если вы чувствуете, что хотите большего контроля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...