如何在安卓中停止动画并立即开始?

3

我是android新手,需要帮助。

我想让我的图片从屏幕顶部掉落,在我按下与图像相同标签的键盘按钮时使其消失。虽然我已经实现了上述内容,但当我想在前一个图像变得不可见后立即再次显示下一个动画时,会出现问题。这是我的动画代码。

public void startAnimation(final ImageView aniView) 
{

    animator= ValueAnimator.ofFloat(0 ,.85f);
    animator.setDuration(Constants.ANIM_DURATION);
    animator.setInterpolator(null);

    //generation of random values
    Random rand = new Random();
    index = rand.nextInt((int) metrics.widthPixels);
    //for debugging
    i = Integer.toString(index);
    Log.e(" index is :", i);
    animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener()
    {       




        @Override
        public void onAnimationUpdate(ValueAnimator animation)
        {
            float value = ((Float) (animation.getAnimatedValue())).floatValue();

            aniView.setTranslationX(index);

            aniView.setTranslationY((height+ (50*mScale))*value);
            //aniView.setTranslationY(height);
        }
    });
    animator.start();
}

//keyboard methods goes here

@Override
public void onClick(View v)
{
    gettext(v);
}

private void gettext(View v)
{
    try
    {
        String b = "";
        b = (String) v.getTag();

        String img_val = map.get(b);
        int  imgid = (Integer) imageView.getTag();

        Log.e("img values=:", img_val+"  "+imgid);
        if(img_val.equals(ALPHABETS[imgid]))
        {
            imageView.setVisibility(View.INVISIBLE);

            animator.start();
            //trying to start the animation again 
        }   

我正在使用animation.addupdateListener来反复调用动画,但它只在.ofFloat完成时才会调用。当我点击适当的按钮时,动画变得不可见,但下一个动画将在相同的时间后再次开始。我想立即启动它。

1个回答

4
基本上再次调用start()是不起作用的。你需要以某种方式“重置”动画,是否尝试过在之前调用end()?
animator.end();
animator.start();

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