Cómo mostrar la imagen de bienvenida durante la actividad de carga
Tengo una actividad que contiene muchas vistas de la interfaz de usuario. En su método onCreate, encontré que una sola línea de setContentView tarda 8-12 segundos en completarse. Así que quiero mostrar mi imagen de logotipo mientras se está cargando. Intenté muchas cosas pero sin éxito. Sospecho que la razón principal podría ser que antes de terminar setContentView, no se puede mostrar nada.
Cualquier ayuda sería apreciada.
- Cómo hacer una pantalla de bienvenida como diapositiva de la imagen
- ¿Qué resolución debería tener mi pantalla de bienvenida de Android?
- La barra de título sigue apareciendo, incluso con requestWindowFeature o android: theme
- Android: La pantalla de inicio no se muestra, ¿por qué?
- Cómo hacer una pantalla de bienvenida (pantalla visible cuando se inicia la aplicación)?
ACTUALIZAR:
Creo que muchas personas no saben que no se puede mostrar ningún diálogo antes de terminar setContentView. Así que usar otra actividad de salpicaduras no me ayuda en absoluto.
UPDATE2
Me olvidé de actualizar esta pregunta después de encontrar la causa del problema. Consulte la siguiente pregunta: setContentView tarda mucho tiempo (10-15 segundos) en ejecutarse
- Seleccione sólo una casilla de verificación de preferencias de salpicaduras
- ¿Cómo hago una pantalla de bienvenida?
- Android SplashScreen
- Crear una pantalla de bienvenida real
- La pantalla en blanco viene antes de salpicar
- Aplicación de pantalla de bienvenida y barra de acción de ocultar
- Android: ¿Cómo mostrar un "tour rápido" al abrir la aplicación por primera vez?
Utilizar AsyncTask
Poner salpicadura en onPreExecute()
Y hacer su trabajo en doInBackground()
Y cerrar splash en onPostExecute()
A continuación se muestra el código simple para crear una pantalla de bienvenida utilizando la clase CountDownTimer
public class SplashDialogActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { // Be sure to call the super class. super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.layout); counter.start(); } MyCount counter = new MyCount(5000, 1000); public class MyCount extends CountDownTimer{ public MyCount(long millisInFuture, long countDownInterval) { super(millisInFuture, countDownInterval); } @Override public void onFinish() { go_back(); } @Override public void onTick(long millisUntilFinished) { } } public void go_back() { counter.cancel(); Intent i=new Intent(this,account.class); i.putExtra("first_time", true); startActivity(i); this.finish(); } }
Prueba este código para la página de bienvenida
private Thread mSplashThread; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.splesh); final Splash sPlashScreen = this; mSplashThread = new Thread(){ @Override public void run(){ try { synchronized(this){ wait(5000); } } catch(InterruptedException ex){ } finish(); Intent intent = new Intent(); intent.setClass(sPlashScreen,Login.class); startActivity(intent); stop(); } }; mSplashThread.start(); } // Processes splash screen touch events @Override public boolean onTouchEvent(MotionEvent evt) { if(evt.getAction() == MotionEvent.ACTION_DOWN) { synchronized(mSplashThread){ mSplashThread.notifyAll(); } } return true; }