2011-02-17 53 views
15

我有一个显示项目列表的应用程序。我需要在主要活动开始之前显示淡出图像。 我想类似的东西 在主要活动中的onCreate方法我开始 一个动漫活动像如何在android中实现启动画面

Intent animationIntent=new Intent(this,AnimationActivity.class); 
startActivityForResult(AnimationIntent); 

在AnimationActivity.class

super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    ImageView introanim = (ImageView) findViewById(R.id.imgView); 
    AnimationSet StoryAnimation = (AnimationSet)AnimationUtils. 
loadAnimation(this, R.anim.alphanim); 
StoryAnimation.setAnimationListener(new AnimationListener() { 

     @Override 
     public void onAnimationStart(Animation animation) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onAnimationRepeat(Animation animation) { 
       AnimationSubActivity.this.finish(); 

     } 

     @Override 
     public void onAnimationEnd(Animation animation) { 
      AnimationSubActivity.this.finish(); 
     } 
    }); 

    introanim.clearAnimation(); 
    introanim.startAnimation(StoryAnimation); 

的onCreate方法和我的main.xml是

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
> 
<ImageView 
android:id="@+id/imgView" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:src="@drawable/icon" 
/> 
</LinearLayout> 

这种方法的问题是,它显示一个amimation,但imageview来屏幕f或一段时间,主要活动都带有幻灯片过渡效果

,但我想我的图像淡出我的活动应该淡入

任何帮助将不胜感激。在此先感谢

+0

@ user609765如果答案解决了您的问题,那么您应该接受它请 – MorningGlory

回答

30

基本上,你要找的是一个闪屏,它显示你的形象,然后淡出。然后,主要活动的屏幕会淡入。因此,您可以为Splash屏幕创建一个活动,然后为您想要调用的主要活动创建另一个活动。这将是您的Splash Screen活动。

public class SplashScreen extends Activity { 
private static final int SPLASH_DISPLAY_TIME = 4000; // splash screen delay time 

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

    new Handler().postDelayed(new Runnable() { 
     public void run() { 

      Intent intent = new Intent(); 
      intent.setClass(Splash.this, NextActivity.class); 

      Splash.this.startActivity(intent); 
      Splash.this.finish(); 

      // transition from splash to main menu 
      overridePendingTransition(R.animate.activityfadein, 
        R.animate.splashfadeout); 

     } 
    }, SPLASH_DISPLAY_TIME); 
} 

NextActivity是您想要淡入其中的任何活动。对于动画,您需要在资源中名为animate的文件夹中创建两个xml文件。 这里是splashfadeout.xml文件

<alpha xmlns:android="http://schemas.android.com/apk/res/android" 
android:interpolator="@android:anim/decelerate_interpolator" 
android:zAdjustment="top" android:fromAlpha="1.0" android:toAlpha="0.0" 
android:duration="4000" /> 

这将是activityfadein.xml文件

<alpha xmlns:android="http://schemas.android.com/apk/res/android" 
android:interpolator="@android:anim/accelerate_interpolator" 
android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="2000" /> 

这些文件基本上是让您的活动进出

+0

非常感谢您的支持 –

+1

为什么您使用Handler启动一个活动而不是在OnCreate中启动一个活动? – kaid

+1

感谢这个惊人的提示。只是为他人提供一个说明,该文件夹应该被命名为“anim”而不是“animate”。欢呼声 – Ethan

4

A“闪屏”像褪色一个@Manish Burman建议不是真正的。这实际上只是一个“全屏商业”,没有用户想花时间看。除了在那里,它没有任何目的,这意味着它没有掩盖该区域的长时间加载时间,就像真正的启动屏幕应该。

如果您要显示启动画面,应该是因为您的初始活动需要花费相当长的时间才能加载 - 然后启动画面可以合理化,向用户显示正在加载内容或说服他该应用程序没有“死亡”。

检查出this指导如何创建一个真正的启动画面。