[RESOLVIDO] Exibir uma capa ao iniciar a APP enquanto ocorre o carregamento das informações

Oi gente,
Estou com a seguinte dúvida, como faço para colocar uma imagem na hora que está iniciando a activity?
Exemplo:
INICIA A APP > CARREGANDO - EXIBE UMA IMAGEM > TERMINA O CARREGAMENTO > EXIBE AS INFORMAÇÕES.

Alguma ideia?

Você deve estar se referindo a um SplashScreen. Caso seja isso vou mostrar como eu faço.

IMPORTANTE: Esse é uma forma bem "rústica" de se fazer. Apenas irá aparecer uma Activity e depois de um tempo determinado ela chamará outra Activity. Não tem nada carregando em plano de fundo mas isso pode ser facilmente resolvido usando o AsyncTask ou Handler :wink:

1º - SplashScreenActivity
O XML geralmente contém apenas uma imagem centralizada, então não há necessidade de mostrar-lo. Nessa classe criamos uma Thread que irá durar o tempo que informar-mos (int intervalo) e quando esse tempo acabar ela chamará a MainActivity.
Temos também o onUserInteraction() que será disparado quando o usuário tocar na tela. Ao tocar vamos imediatamente para a MainActivity.

[code]public class SplashScreenActivity extends Activity {
private Thread splashThread;
private int waited = 0;
private int intervalo = 20000;

@Override
public void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
            
            // FullScreen!
	requestWindowFeature(Window.FEATURE_NO_TITLE);
	getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

	setContentView(R.layout.splash);

	splashThread = new Thread() {
		@Override
		public void run() {
			try {
				while (waited < intervalo) {
					sleep(100);
					waited += 100;
				}
			} catch (InterruptedException e) {
				
			} finally {
				Intent i = new Intent();
				i.setClass(getBaseContext(), MainActivity.class);
				startActivity(i);
			}
		}
	};

	splashThread.start();
}

@Override
public void onUserInteraction() {
	super.onUserInteraction();
	waited = intervalo;
}

}[/code]

2º - Manifest.xml
O Manifest deve ficar parecido com o exemplo abaixo:

<activity android:name=".simpledrumshd.SplashScreenActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".simpledrumshd.MainActivity" android:label="@string/app_name"> <intent-filter> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>

Espero ter ajudado :slight_smile:

É isso mesmo, vou dar uma olhadinha com calma e depois eu falo se deu certo.

Era exatamente isso.
Obrigada ! :smiley:

O GUJ agradece! Obrigado e volte sempre :smiley:

SplashScreen baseada em tempo é uma falácia.

Digo isto porquê a maneira correta de implementar é fazer com que ela saia da tela tão logo a aplicação esteja realmente pronta para ser exibida.

O problema da temporização é que se você definir que a splash ficará por 5 segundos na tela e teu dispositivo demorar mais do que isto para inicializar a aplicação, você terá problemas…

Então a dica é: Implemente de forma a não depender de tempo, mas sim da condição da app. Se ela está realmente pronta para ser usada, você retira a splash da tela e apresenta a interface principal.

Esta regra sempre valeu para qualquer linguagem/sistema (desktop/mobile).

Eu uso minha splash screen com asynctask e só aparece as minhas informações depois de todo o carregamento.
Sofri muito para conseguir,mas ficou lindão.
Valeu pela dica !! :smiley: