Android Frame Animation с AnimationDrawable останавливается при использовании внутри TranslateAnimation - PullRequest
5 голосов
/ 18 сентября 2011

Для всех,

У меня есть анимированное изображение с анимацией кадров, которое я перемещаю сверху за вид и на экран.Когда TranslateAnimation завершена, я хочу сохранить конечную позицию, поэтому для setFillAfter установлено значение true.

Моя проблема заключается в том, что пока анимация TranslateAnimation прекращается, анимация кадров останавливается.Как перезапустить или сохранить анимацию кадров?

    <?xml version="1.0" encoding="utf-8"?>
    <animation-list xmlns:android="http://schemas.android.com/apk/res/android"
     id="selected" android:oneshot="false">
         <item android:drawable="@drawable/a" android:duration="200" />
         <item android:drawable="@drawable/b" android:duration="200" />
         <item android:drawable="@drawable/c" android:duration="200" />
     </animation-list>

    loadingView = (RelativeLayout) findViewById(R.id.loadingBar);
    loadingView.setVisibility(View.VISIBLE);
    loadingImage = (ImageView) loadingView.findViewById(R.id.loading);
    loadingImage.setBackgroundResource(R.drawable.loading);
    animateImages = (AnimationDrawable) loadingImage.getBackground();

    translateAnimation = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f,
                                                Animation.RELATIVE_TO_SELF,0.0f, Animation.RELATIVE_TO_SELF, -1.0f);
    translateAnimation.setInterpolator(new AccelerateInterpolator());
    translateAnimation.setDuration(2000); 
    translateAnimation.setFillEnabled(true);
    translateAnimation.setFillAfter(true);      

    translateAnimation.setAnimationListener(new AnimationListener() 
    {
        @Override
        public void onAnimationStart(Animation animation) 
        {
            // TODO Auto-generated method stub
                     animateImages.start();                             
        }

        @Override
        public void onAnimationEnd(Animation arg0) 
        {

        }

        @Override
        public void onAnimationRepeat(Animation animation) 
        {
            // TODO Auto-generated method stub

        }
    });

    loadingView.startAnimation(translateAnimation); 

1 Ответ

0 голосов
/ 05 июня 2014

У меня была та же проблема, и я не смог найти окончательного решения. Поэтому для меня было добавление длинной анимации в конце, почти без изменений (анимация трансляции перемещается всего на несколько пикселей через некоторое время), поэтому покадровая анимация продолжает воспроизводиться в течение нескольких минут. Для моего приложения это достаточно. Может быть, вы найдете эту идею полезной.

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