使用TranslateAnimation时,Android帧动画(AnimationDrawable)停止了。

5

大家好,

我有一个使用帧动画制作的动态图像,我想将其从视图后面向上移动并显示在屏幕上。当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); 

你能展示一下你的帧动画xml吗? - Lalit Poptani
已更新问题并附上了帧动画的XML。 - Koppo
我注意到的另一件事是,当我触摸屏幕时,只要我一直触摸屏幕,动画就会开始。当我把手拿开时,它就停止了。 - Koppo
1个回答

0
我曾经遇到过同样的问题,但是找不到一个明确的解决方案。所以我的解决方法是在最后添加一个长时间的动画,几乎没有变化(只是一个翻译动画,在很长一段时间后移动了几个像素),这样逐帧动画就可以持续播放几分钟。对于我的应用来说已经足够了。也许你会觉得这个想法有用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接