Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何在Android中停止动画大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
需求:

我需要逐个运行多个动画.我正在使用onAnimationEnd()这样做.

动画时,如果是触摸事件,我需要停止动画并在该位置显示新图像.

问题:

>我在onTouch的情况下使用clearAnimation().因此,完整的动画被删除了.我的目的是停止动画并在触摸的部分显示新图像.我怎样才能做到这一点?
>由于clearAnimation(),onAnimationEnd()被多次调用,我面临着一个一个地运行动画的问题.
>是否有任何功能只是为了停止动画而不是完全清除它?我使用的是Android 2.1.

@Override
public Boolean onTouch(View v,MotionEvent event) {      
    switch(event.getAction()) {
        case MotionEvent.ACTION_UP:
            imageArraY[g_animCount - 1].clearAnimation();          
            break;

        default:
            break;
    }

    return true; // inDicate event was handled
}

@Override
public void onAnimationEnd(Animation animation) {
    layout.removeView(imageArraY[g_animCount - 1]);
    if ( (g_animCount < count))
    {               
        startNextAnimation();
    }
    else
    {
        g_animCount = 0;
        isBegin = false;
    }
}

public void startNextAnimation()
{
     int j = random.nexTint(200);
     layoutParams.setMargins(j,-20,30,0);
     layout.addView(imageArraY[g_animCount],layoutParams); 
     imageArraY[g_animCount].startAnimation(movarray[g_animCount]);
     g_animCount++;
}

解决方法

动画仅移动屏幕上的像素,而不移动对象的位置.为了让你留在它的最后,设置你的
animation.setFillAfter(true);

要实际移动对象的位置,请查看使用以下代码段的修改版本.

@H_714_12@marginLayoutParams marginParams = new MarginLayoutParams(object.getLayoutParams()); marginParams.setMargins(left,(top+hol2),left,0); RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(marginParams); object.setLayoutParams(layoutParams);

关于多次调用onAnimationEnd,我需要看一些代码.

我知道手动停止动画的唯一两种方法

animation.cancel(); (may not work for 2.1,can't remember)

要么

object.clearAnimation();

示例代码如下:

upmotionleft = new TranslateAnimation(0,600);
    upmotionleft.setDuration(2000);
    upmotionleft.setFillEnabled(true);
    upmotionleft.setAnimationListener(new Animation.AnimationListener() 
    {
        @Override
        public void onAnimationStart(Animation animation) 
        {}
        @Override
        public void onAnimationEnd(Animation animation) 
        {
            //sets to wherever I want the final object to be
            MarginLayoutParams marginParams = new MarginLayoutParams(object.getLayoutParams());
            marginParams.setMargins(left,top-hol2,0);
            RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(marginParams);
            object.setLayoutParams(layoutParams);

            //starts next animation
            object.startAnimation(nextAnimation);
        }

        @Override
        public void onAnimationRepeat(Animation animation) 
        {}
    });

object.startAnimation(upmotionleft);

这段代码是从我的项目中复制和粘贴的,但它已经有所改变,应该仍然运行.

大佬总结

以上是大佬教程为你收集整理的如何在Android中停止动画全部内容,希望文章能够帮你解决如何在Android中停止动画所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。