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.

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

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; } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.