0

在我的 android 应用程序中,当我单击所有图像动画中的任何一个时,我有五个图像视图。我为所有图像设置了缩小和放大动画。动画完成后,选定的图像视图将不可见。图像不可见后,当我单击该图像视图位置时,它再次启动动画并且图像不可见。

放大动画:

<scale  xmlns:android="http://schemas.android.com/apk/res/android"
  android:fromXScale="1" 
  android:toXScale="5" 
  android:fromYScale="1" 
  android:toYScale="5" 
  android:pivotX="50%" 
  android:pivotY="50%" 
  android:duration="1000" 
  android:fillAfter="true">
</scale>

缩小动画

<scale  xmlns:android="http://schemas.android.com/apk/res/android"
  android:fromXScale="5" 
  android:toXScale="1" 
  android:fromYScale="5" 
  android:toYScale="1" 
  android:pivotX="50%" 
  android:pivotY="50%" 
  android:duration="1000" 
  android:fillAfter="true">
</scale>

 zoomin =AnimationUtils.loadAnimation(this, R.anim.zoom);
 zoomout=AnimationUtils.loadAnimation(this,  R.anim.zoomout);

 ImageView v2 = (ImageView) findViewById(R.id.image2);

     v2.setOnClickListener(new View.OnClickListener() 
    {
       @Override public void onClick(View v) 
       {

          v2.setAnimation(zoomin);
          v2.startAnimation(zoomin);
          v2.setAnimation(zoomout);
          v2.startAnimation(zoomout);
          v2.clearAnimation();
      }
   });
4

6 回答 6

9

将此代码添加到您的动画对象:

animation.setAnimationListener(new AnimationListener() 
        {

            @Override
            public void onAnimationStart(Animation animation) { }

            @Override
            public void onAnimationRepeat(Animation animation) { }

            @Override
            public void onAnimationEnd(Animation animation) 
            {
                v2.setImageResource(R.drawable.some_transparent_image);

            }
        });
于 2013-11-12T05:58:29.600 回答
3

出现此问题是因为您在两个动画 XML 文件中都添加了 android:fillAfter="true"。

要么从两个 XML 中删除 "android:fillAfter="true",要么在两个文件中保留 "android:fillAfter="false"。

于 2013-11-12T07:59:05.610 回答
1

您可以简单地更改图层的透明度。

v2.setAlpha(0f);
于 2016-01-17T09:57:17.507 回答
0

您必须处理该动画的动画侦听器。

zoomin.setAnimationListener(new AnimationListener() 
    {

        @Override
        public void onAnimationStart(Animation animation) { }

        @Override
        public void onAnimationRepeat(Animation animation) { }

        @Override
        public void onAnimationEnd(Animation animation) 
        {               
            v2.setVisibility(View.GONE);
        }
    });
于 2013-11-12T06:02:19.880 回答
0

您需要使用透明图像 您需要做的就是当动画结束时,您需要将透明图像设置为该图像的背景/scr,从而替换前一个。

更改视图的可见性不会解决您的问题

 v2.setVisibility(View.GONE);
 v2.setVisibility(View.INVISIBLE);

由于上述两个导致您的视图不可点击,您将无法再次点击。

于 2013-11-12T06:04:29.227 回答
0

你必须首先使用 image.clearAnimation() 然后隐藏它 image.visibility = View.GONE

于 2022-02-03T09:50:41.230 回答