sexta-feira, 7 de junho de 2013

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:
  1. Agendar ações a serem executadas em algum instante.
  2. 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"). 
  • splash.xml
<?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>
  • main.xml
  <?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

Nenhum comentário:

Postar um comentário