Ladescreen (SplashActivity)
- Home
- Tutorials
- Android
- Spiele App für Android 2.3.6 Programmieren
- Ladescreen (SplashActivity)
Hey Androidbegeisterter. Du bist schon ziemlich weit gekommen, wenn du bei diesem Teil des Tutorials angelangt bist. Gratulation!
Doch nun nicht schlapp machen, denn wir haben noch ein kleines Stück vor uns.
Nun fragst du dich vielleicht, was die SplashActivity ist. Bei der SplashActivity handelt es sich um eine Art Ladescreen der angezeigt werden soll, wenn unsere App gestartet wird. Und da es etwas ist, was im Vordergrund passiert, muss es eine Aktivity sein.
Wie erstellen wir also eine solche SplashActivity?!
Eigentlich ganz einfach, (fast) alles was wir dazu brauchen, haben wir bereits in den letzten Tutorials gelernt. Das Erstellen einer Activity, diese Activity im AndroidManifest anlegen und als Launcher einstellen, ein Layout anzeigen lassen - das haben wir bisher alles gelernt.
Also fangen wir an und legen eine neue Klasse mit dem Namen SplashActivity an. Diese lassen wir von Activity erben und überschreiben die onCreate() - Methode in dieser Klasse.
package com.panjutorials.lazypudding;
import android.app.Activity;
import android.os.Bundle;
public class SplashActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
Außerdem legen wir noch ein neues Layout an. Dieses Nennen wir "splash" und als Inhalt erstellen wir lediglich einen zentierten TextView der den Namen unserer App als Text haben soll.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="Lazy Pudding"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
Nun setzen wir splash in unserer onCreate() noch als den View.
setContentView(R.layout.splash);
Und jetzt kommen wir noch zu unserem pseudo Timer. Denn es handelt sich hierbei nicht direkt um einen Timer, sondern eher um einen Thread, den wir starten und für 2000 Millisekunden schlafen lassen. Danach lassen wir ihn eine neue Instanz unserer GameActivity starten (hier wird später unsere MenuActivity aufgerufen werden) und schließen die Splash Activity mit dem Befehl finish(); damit der User mit der Back-Taste nicht zu dieser Activity zurückkehren kann.
Thread logoTimer = new Thread(){
public void run(){
try{
sleep(2000);
Intent gameIntent = new Intent(SplashActivity.this, GameActivity.class);
startActivity(gameIntent);
finish();
} catch (InterruptedException e) {
e.printStackTrace();
}
finally{
}
}
};
logoTimer.start();
Und (vorerst) fertig wäre unsere SplashActivity - die wie folgt aussieht:
package com.panjutorials.lazypudding;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
public class SplashActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
Thread logoTimer = new Thread(){
public void run(){
try{
sleep(2000);
Intent gameIntent = new Intent(SplashActivity.this, GameActivity.class);
startActivity(gameIntent);
finish();
} catch (InterruptedException e) {
e.printStackTrace();
}
finally{
}
}
};
logoTimer.start();
}
}
Den Aufmerksamen unter euch wird jetzt vielleicht aufgefallen sein, dass noch etwas fehlt. Wir dürfen nämlich nicht vergessen diese Activity noch ins AndroidManifest einzutragen. Und zwar folgenden Code:
<activity
android:label="@string/app_name"
android:screenOrientation="landscape"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:name=".SplashActivity"
android:configChanges="keyboardHidden|orientation" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Und nicht zu vergessen die Zeile:
<category android:name="android.intent.category.LAUNCHER" />
In der GameActivity...
<category android:name="android.intent.category.DEFAULT" />
... ändern. Sonst würde ein Error auftauchen, da Android nicht wüsste welche der beiden Activitys nun die LAUNCHER - Activity ist. Also diejenige, die beim Starten der App zuerst aufgerufen werden soll.
Spiele App für Android 2.3.6 Programmieren
-
Android 2.3.6 Spiele App Programmieren
-
Lektion1.1
-
Lektion1.2
-
Lektion1.3
-
Lektion1.4
-
Lektion1.5
-
Lektion1.6
-
Lektion1.7
-
Lektion1.8
-
Lektion1.9
-
Lektion1.10
-
Lektion1.11
-
Lektion1.12
-
Lektion1.13
-
Lektion1.14
-
Lektion1.15
-
Lektion1.16
-
Lektion1.17
-
Lektion1.18
-
Lektion1.19
-
Lektion1.20
-
Lektion1.21
-
Lektion1.22
-
Lektion1.23
-
Lektion1.24
-
Lektion1.25
-
Lektion1.26
-
Lektion1.27
-
Lektion1.28
-
Lektion1.29
-
Lektion1.30
-
Lektion1.31
-
Lektion1.32
-
Lektion1.33
-
Lektion1.34
-
Lektion1.35
-
Lektion1.36
-
Lektion1.37
-
Lektion1.38
-
Lektion1.39
-