1

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

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

一旦应用程序打开,它应该循环。谢谢

这是我在 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);

淡入.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>  

淡出.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>
4

2 回答 2

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 上也放另一个监听器。这将再次启动动画淡出。从数组中挑选图像并显示。

于 2013-09-03T12:31:21.160 回答
0

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

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

所以你最终会在你的 Activity.xml 中有两个 imageViews

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/>

android:src2.-没有属性的新图像

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

在你的activity类 onCreate()中定义你要使用的新图片,当然你需要把这张图片保存在你的drawable文件夹中,然后用drawable的usingsetImageResource()方法设置图片,代码是这样的;

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);


    }
于 2014-03-29T21:53:34.217 回答