Desenvolvendo um Splash Screen em Android
O que é um Splash Screen? É uma tela de apresentação que é exibida ao abrir o aplicativo durante um período, geralmente alguns segundos.
É extremamente simples criar um Splash Screen. Primeiramente devemos criar uma activity que implementa a classe Runnable. Segue abaixo o código fonte da classe.
package adamitech.blog;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
public class SplashScreen extends Activity implements Runnable {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
Handler h = new Handler();
h.postDelayed(this, 3000);//aqui é definido o delay do handler em milisegundos
}
public void run(){
//Aqui inicia a activity "Android_Splash_ScreenActivity" (classe principal)
startActivity(new Intent(this, Android_Splash_ScreenActivity.class));
//Aqui chamamos o método finish() para terminar a activity atual, no caso a Splash Screen
finish();
}
}
O Handler possui duas funções principais:
- Agendar ações a serem executadas em algum instante.
- Separar uma ação para ser executada em uma outra Thread.
Iremos utilizar o método postDelayed() para executar o Runnable depois de um tempo.
A classe SplashScreen irá executar depois de 3 segundos a outra activity "Android_Splash_ScreenActivity".
Segue o código da activity "Android_Splash_ScreenActivity" (bem simples):
package adamitech.blog;
import android.app.Activity;
import android.os.Bundle;
public class Android_Splash_ScreenActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
Segue abaixo a estrutura desse exemplo (Package Explorer do Eclipse):
Como vocês podem ver na imagem acima, devemos ter um arquivo splash.xml (possui um ImageView para exibir a imagem splash_screen.png) e main.xml (possui um TextView para exibir o texto "Minha Activity").
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:screenOrientation="landscape">
<ImageView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/splash_screen"/>
</LinearLayout>
<?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">
<TextView
android:textSize="22dp"
android:textStyle="bold"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:text="Minha Activity"/>
</LinearLayout>
Não podemos esquecer de alterar o AndroidManifest.xml para especificar a Activity que será executada ao iniciar a aplicação.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="adamitech.blog"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".SplashScreen"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" android:screenOrientation="portrait"/>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".Android_Splash_ScreenActivity" android:screenOrientation="portrait">
<intent-filter><action android:name="android.intent.action.MAIN"></action></intent-filter>
</activity>
</application>
</manifest>
O resultado final será o seguinte:
Na tela Splash Screen pode conter o logotipo da empresa ou do próprio aplicativo e até mesmo propaganda de terceiros, podendo gerar ganhos para você.
Espero que seja útil para vocês e em breve teremos novas postagens!!!!
Abraço
Rafael Adami