Start › Foren › Developer Forum › Tutorials › [Anfänger Tutorial] Wechseln vom Portrait- zum Landscreenlayout
Dieses Thema enthält 0 Antworten, hat 1 Stimme, und wurde zuletzt vor vor 4 Jahre, 3 Monate von MSeiz5 aktualisiert.
-
AutorBeiträge
-
20.03.2012 um 13:46 #46956
Wechseln vom Portrait- zum Landscreenlayout
Vorraussetzungen:
- Eclipse mit installierten Android Plugins http://forum.android-schweiz.ch/developer-forum/tutorials/3497-tutorial-ausfuehrliche-anleitung-android-unter-eclipse-zum-laufen-kriegen.html
- Bild für Icon (vom Internet oder so)
Ich möchte hier kurz erklären, was nötig ist, um Eure App automatisch (durch Rotation des Gadgets) in den Landscape (Widescreen) bzw. in den Portrait Modus zu versetzen.
Um die Ansicht in den Landscape Modus zu bekommen, sind nur zwei kleine Schritte notwendig!
- layout-land Ordner erstellen
- main.xml im layout-land Ordner erstellen
Layout-Land Ordner erstellen
Im Ordner “res” im Stammverzeichnis Eurer App muss ein neuer Ordner (layout-land) erstellt werden.
==> Der Ordner MUSS layout-land heissen![ATTACH=full]3447.vB[/ATTACH][ATTACH=full]3448.vB[/ATTACH]
main.xml im Layout-Land Ordner erstellen
Damit auch etwas angezeigt wird, wenn das Gadget in den Landscape Modus wechselt, muss noch eine View mit Namen main.xml erstellt werden.main.xml aus diesem Grund, weil wir die View mit
setContentView(R.layout.main);
aufrufen.
Android weiss von alleine, dass es die main.xml aus dem Ordner “layout-land” nehmen muss, sobald das Gerät in diesen Zustand versetzt wird.Umgekehrt gilt natürlich genau dasselbe.
Beispiel mit Code & Erklärungen
Vorraussetzungen:- Ein frisch erstelltes Projekt (Hello World würde sich dazu auch eignen)
In meinem Beispiel heisst das Projekt “Landscape”.
Projektübersicht:
[ATTACH=full]3449.vB[/ATTACH]Die Activity landscape.java
package marco.test.landscape;
//Benötigte Module importieren
import android.app.Activity;
import android.os.Bundle;
//Definition der Klasse landscape
public class landscape extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
/** Was geschieht, wenn die App gestartet wird **/
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}public class landscape extends Activity {
}Da landscape.class die einzige Klasse ist, muss diese über eine Activity verfügen, durch welche die View (main.xml) aufgerufen werden kann. Dies wird duch “extends Activity” ermöglicht.
public void onCreate(Bundle savedInstanceState) {
}Mit diesem Befehl wird beim Start der Activity landscape ein Bundle mit dem Namen “savedInstanceState” erstellt.
- In ein Bundle können diverse Typen gepackt werden und so an andere Activitys versendet werden.
super.onCreate(savedInstanceState);Hier wird Basisklasse (Activity) aufgerufen. Die Basisklasse sorgt für die Einrichtung der mainActivity (landscape.java).
setContentView(R.layout.main);
Dieser Befehl ist zuständig für die Anzeige der main.xml (das xml wird im Code weggelassen, wie die meisten Endungen). Wird nun das Gadget gedreht, so wechselt dieser Abschnitt zu “R.layout-land.main”.
Die View main.xml (layout)
<?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="fill_parent"
android:orientation="vertical" >
<!-- Textanzeige "NORMAL" -->
<TextView
android:layout_width="208dp"
android:layout_height="wrap_content"
android:text="NORMAL"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>Dazu gibt es eigentlich nicht viel zu sagen. Das Layout hald
“layout_width” bezeichnet die Layout Breite
“layout_height” bezeichnet die Layout Höhe
“wrap_content” bedeutet, es nimmt nur so viel Platz in Anspruch wie es benötigt
“fill_parent” bedeutet, es füllt den Platz, welche zur Verfügung steht
“textAppearance” bezeichnet die SchriftgrösseDie View main.xml (layout.land)
Es ist genau die gleiche xml. Ausser dass hier ein anderer Text in der TextView steht.<?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="fill_parent"
android:orientation="vertical" >
<!-- Textanzeige "LAND" -->
<TextView
android:layout_width="208dp"
android:layout_height="wrap_content"
android:text="LAND"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>Das fertige Projekt kann auch als ZIP heruntergeladen werden.
-
AutorBeiträge
Du musst angemeldet sein, um zu diesem Thema eine Antwort verfassen zu können.