2011-02-17 22 views
15

Tengo una aplicación que muestra la lista de elementos. Necesito mostrar una imagen de fadeout antes del inicio de la actividad principal. Traté algo así en el método onCreate de la actividad principal empecé actividad de una animación comoCómo implementar la pantalla de presentación en android

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

en el método onCreate de 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); 

y mi main.xml es

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

problema con este enfoque es que muestra una amimation pero imageview viene a la pantalla f o un tiempo y actividad principal viene con efecto de transición de diapositivas

pero quiero que la imagen se desvanezca y se mi actividad deben desaparecer en

se observará ninguna ayuda. Gracias de antemano

+0

@ user609765 Si las respuestas resolvieron su problema, debe aceptarlo Por favor – MorningGlory

Respuesta

30

Básicamente, lo que estás buscando es una pantalla de bienvenida que muestra tu imagen y luego se desvanece. La pantalla de una actividad principal se desvanece. Entonces, lo que podrías hacer es crear una actividad para la pantalla de bienvenida y luego otra para la actividad principal a la que quieras llamar. Esta sería su actividad de pantalla de bienvenida.

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 es cualquier actividad que desea desvanecerse y tomar su lugar. Para las animaciones necesitarás crear los dos archivos xml en una carpeta llamada animate en tus recursos. Aquí está el archivo 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" /> 

Este sería el archivo 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" /> 

Estos archivos, básicamente, hacer que sus actividades aparecen y desaparecen

+0

muchas gracias manish es impresionante –

+1

¿por qué utiliza un controlador para iniciar una actividad en lugar de simplemente iniciar una actividad en OnCreate? – kaid

+1

Gracias por este increíble consejo. Solo una nota para otros que la carpeta debería llamarse "anim" en lugar de "animar". Cheers – Ethan

4

Una "pantalla de bienvenida" como el que sugiere @Manish Burman no es real. Es solo un "comercial de pantalla completa", que ningún usuario quiere pasar el tiempo mirando. No tiene otro propósito que estar allí, lo que significa que no oculta tiempos de carga largos o algo en esa región, como una pantalla de bienvenida real.

Si va a mostrar una pantalla de presentación, debe ser porque tiene una actividad inicial que tarda bastante tiempo en cargarse, entonces se puede justificar una pantalla de bienvenida para mostrar al usuario que se está cargando o para convencerlo que la aplicación no ha "muerto".

Consulte this guía sobre cómo crear una pantalla de inicio real.

Cuestiones relacionadas