具有多个图像的android imageview淡出淡出动画

时间:2013-06-04 03:41:01

标签: android android-layout android-animation

这是我第一次在这里提问... 我希望有人可以帮助我......

我想动画多个动画为fade infade out的图像。我能够为一个imageview制作动画,但我需要的是一旦第一个imageview淡出,第二个imageview必须淡入等等......

应该在打开应用程序后循环。感谢

这是我如何在我的java onCreate()中调用动画,

   final ImageView image = (ImageView)findViewById(R.id.bsc);
   final Animation animationFadeIn = AnimationUtils.loadAnimation(this,     R.anim.fadein);
   image.startAnimation(animationFadeIn);
   final Animation animationFadeOut = AnimationUtils.loadAnimation(this, R.anim.fadeout);
image.startAnimation(animationFadeOut);

fade in.xml

      <?xml version="1.0" encoding="utf-8"?>
     <set xmlns:android="http://schemas.android.com/apk/res/android"
       android:interpolator="@android:anim/linear_interpolator">
      <alpha 
         android:fromAlpha="0.1" 
         android:toAlpha="1.0" 
         android:duration="2000" 
         />
    </set>  

淡出out.xml

     <?xml version="1.0" encoding="utf-8"?>
 <set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/linear_interpolator">
<alpha 
    android:fromAlpha="1.0" 
    android:toAlpha="0.1" 
    android:duration="2000" 
    />
 </set>

2 个答案:

答案 0 :(得分:2)

尝试使用AnimationListener。

final ImageView image = (ImageView)findViewById(R.id.bsc);
final Animation animationFadeIn = AnimationUtils.loadAnimation(this, R.anim.fadein);
final Animation animationFadeOut = AnimationUtils.loadAnimation(this, R.anim.fadeout);

AnimationListener animListener = new AnimationListener(){

        @Override
        public void onAnimationStart(Animation animation) {
        }

        @Override
        public void onAnimationRepeat(Animation animation) {
            }

        @Override
        public void onAnimationEnd(Animation animation) {
            image.setImageResource(R.drawable.hsc);
            image.startAnimation(animationFadeIn);
        }
    };
image.startAnimation(animationFadeOut);
animationFadeOut.setAnimationListener(animListener);

如果你想循环,那么也将另一个监听器放在animationFadeIn上。这将再次启动animationFadeOut。从阵列中选择图像并显示。

答案 1 :(得分:0)

在Activity.xml布局中创建一个新的ImageView,请注意我在此ImageView中没有使用属性android:src="@drawable/....",就像这样

    <ImageView 
        android:id="@+id/uno"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
       />

因此,最终您的Activity.xml中将有两个imageView

1.-您的第一张图片(代码中的原件)

<ImageView
    android:id="@+id/bsc"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:src="@drawable/your_first_image/>

2.-没有android:src属性的新图片

 <ImageView 
        android:id="@+id/uno"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
       />

在您的活动类onCreate()中定义您要使用的新图像,当然您需要将此图像保存在可绘制文件夹中,然后使用setImageResource()方法设置图像及其drawable,代码将是这样的;

ImageView nueva = null;
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
         //....your code...
         nueva = (ImageView) findViewById(R.id.uno);
         //Here set the new image 
         nueva.setImageResource(R.drawable.your_new_image);
}

现在只需要在onResume()方法中添加动画,例如:

@Override
    protected void onResume() {
           super.onResume();
          //the imagen you are using in your code
           image.startAnimation(animationFadeOut);
           //the new image fadein
           nueva.startAnimation(animationFadeIn);


    }