淡出的麻烦——Android动画

淡出的麻烦——Android动画,android,animation,Android,Animation,我正在做我的第一个Android项目,我开始制作一个简单的闪屏,在主菜单显示之前,闪屏会逐渐变黑。到目前为止,它是有效的。问题就在图像淡出后,在显示主菜单之前,它会在瞬间弹出 以下是SplashActivity.java的代码: public class SplashActivity extends Activity { LinearLayout mLinearLayout; @Override public void onCreate(Bundle savedInstanceSta

我正在做我的第一个Android项目,我开始制作一个简单的闪屏,在主菜单显示之前,闪屏会逐渐变黑。到目前为止,它是有效的。问题就在图像淡出后,在显示主菜单之前,它会在瞬间弹出

以下是SplashActivity.java的代码:

public class SplashActivity extends Activity
{   
LinearLayout mLinearLayout;

 @Override
 public void onCreate(Bundle savedInstanceState) 
 {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.splash);

     mLinearLayout = new LinearLayout(this);


     ImageView i = new ImageView(this);
     i.setImageResource(R.drawable.splash);
     mLinearLayout.addView(i);
     setContentView(mLinearLayout);

     Animation fade = AnimationUtils.loadAnimation(this, R.anim.fade_out);
     i.startAnimation(fade);

     fade.setAnimationListener(new AnimationListener() {
         public void onAnimationEnd(Animation animation) 
         {
             startActivity(new Intent(SplashActivity.this, MenuActivity.class));
             SplashActivity.this.finish(); 
         }

         public void onAnimationRepeat(Animation arg0) {            
         }

         public void onAnimationStart(Animation arg0) {
         }
     });
 }
}
下面是splash.xml的代码:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
 xmlns:android = "http://schemas.android.com/apk/res/android"
 android:orientation = "vertical"
 android:layout_width = "match_parent"
 android:layout_height = "match_parent"
 android:background = "#000">   
</LinearLayout>

最后,这里是淡出的xml:

<set android:shareInterpolator="false" xmlns:android="http://schemas.android.com/apk/res/android">
  <alpha
    android:fromAlpha="1.0"
    android:toAlpha="0.0"
    android:duration="500"
    android:startOffset="2500">
  </alpha>
</set>

几点注意: 现在启动屏幕只是为了展示(这意味着我知道现在它没有任何真正的用途)。 我可以粘贴AndroidManifest xml或您认为必要的任何其他内容


非常感谢您的帮助。谢谢

动画结束,然后翻转回以前的状态。Android动画令人困惑,但想象一下你看到的是海市蜃楼。您正在设置动画的视图实际上没有任何变化。一旦结束,它就会回到过去

例如,创建一个按钮100dp x 100dp,并通过缩放或旋转来设置动画。非常慢。当它运行时,如果你点击看起来空白的区域,按钮仍然会记录点击。那是因为它仍然“在那里”,但你看不到它

您需要做的是在动画侦听器中设置图像的可见性:

public void onAnimationEnd(Animation animation) 
     {
         startActivity(new Intent(SplashActivity.this, MenuActivity.class));
         SplashActivity.this.finish(); 
         i.setVisibility(View.INVISIBLE);
     }
您可能需要在onAnimationStart中执行此操作。实验

不久前我做了一个关于这个的演示。可能有用:


动画结束,然后翻转回以前的状态。Android动画令人困惑,但想象一下你看到的是海市蜃楼。您正在设置动画的视图实际上没有任何变化。一旦结束,它就会回到过去

例如,创建一个按钮100dp x 100dp,并通过缩放或旋转来设置动画。非常慢。当它运行时,如果你点击看起来空白的区域,按钮仍然会记录点击。那是因为它仍然“在那里”,但你看不到它

您需要做的是在动画侦听器中设置图像的可见性:

public void onAnimationEnd(Animation animation) 
     {
         startActivity(new Intent(SplashActivity.this, MenuActivity.class));
         SplashActivity.this.finish(); 
         i.setVisibility(View.INVISIBLE);
     }
您可能需要在onAnimationStart中执行此操作。实验

不久前我做了一个关于这个的演示。可能有用:

这会有帮助的

 public void onAnimationEnd(Animation animation) 
         {
             i.setVisibility(View.INVISIBLE);
             startActivity(new Intent(SplashActivity.this, MenuActivity.class));
             SplashActivity.this.finish(); 
         }
这会有帮助

 public void onAnimationEnd(Animation animation) 
         {
             i.setVisibility(View.INVISIBLE);
             startActivity(new Intent(SplashActivity.this, MenuActivity.class));
             SplashActivity.this.finish(); 
         }

请注意,您还可以调用
fade.setFillAfter(true)
;这将在动画结束时将最终结果应用于视图。请注意,您还可以调用
fade.setFillAfter(true)
;这将在动画结束时将最终结果应用于视图。