Android:淡入淡出视图

我需要显示一个图像button,淡入淡出(和进出等…)透明度可以用setAlpha设置,但我怎么可以淡入淡出? 我的意思是我不能在另一个线程上做,因为你需要在UI线程上做这样的事情,对吧?

我想这可以用animation完成,但是我还没有find任何东西,因为我没有任何animation的经验,也不知道要search什么。

其实我真正想要的是褪色一个图像和另一个出来,但我想最简单的方法是把第一个图像button下面的第二个,只是淡化第二个。 还是有更简单的方法来做到这一点?

    以下是我现在使用的解决scheme,适用于低于12的API级别:

     AlphaAnimation anim = new AlphaAnimation(1.0f, 0.0f); anim.setDuration(1000); anim.setRepeatCount(NUM_REPEATS); anim.setRepeatMode(Animation.REVERSE); button.startAnimation(anim); 

    这是我们在项目中使用的animation。 微调是一个视图,所以你可以改变这与你的imageview。 所以确实有两个图像在彼此之上,一个是看不见的。 这是我们如何做到的。 希望能帮助到你。

      spinner.setVisibility(View.VISIBLE); spinner.setAlpha(0); spinner.animate().setDuration(200).alpha(1).setListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { spinner.setVisibility(View.VISIBLE); } }); infoActivityContent.animate().setDuration(200).alpha(0).setListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { infoActivityContent.setVisibility(View.GONE); mainPresenter.logout(); } }); 

    你必须阅读从Android developers Crossfading两个视图 。 在本教程中解释了如何做你想做的。

    实现animation类(您可以通过XML加载或dynamic创build它)。

    然后你可以通过API setAnimation(animationanimation)来设置它。

    你可以将你的第一个图像的多个连续帧变形到你的第二个图像,然后定义为animation-list并在onCreate中启动animation

    button_frames.xml:

      <?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@drawable/frame1" android:duration="100" /> <item android:drawable="@drawable/frame2" android:duration="100" /> .... 

    布局:

      <ImageView android:id="@+id/button" android:background="@drawable/button_frames"/> 

    在OnCreate:

      ImageView button= (ImageView)findViewById(R.id.button); mAnimation = (AnimationDrawable) animationView.getBackground(); button.postDelayed(new Runnable() { public void run() { mAnimation.start(); } }, 100);