[Anfänger Tutorial] Wechseln vom Portrait- zum Landscreenlayout

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.

1 Beitrag anzeigen (von insgesamt 1)
  • Autor
    Beiträge
  • #46956

    MSeiz5
    Mitglied

    Wechseln vom Portrait- zum Landscreenlayout

    Vorraussetzungen:

    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!

    1. layout-land Ordner erstellen
    2. 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&#34;
    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össe

    Die 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&#34;
    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.

1 Beitrag anzeigen (von insgesamt 1)

Du musst angemeldet sein, um zu diesem Thema eine Antwort verfassen zu können.