2012-04-14 6 views
0

Ich schreibe eine Anwendung, die im Hochformat eine Galerie an der Spitze hat und wenn Sie auf ein Bild klicken, wird es aufgeblasen und füllt den gesamten Bildschirm.Wie startet man eine neue Aktivität, wenn sich die Bildschirmausrichtung ändert? Android

Dies funktioniert jedoch im Querformat die Galerie deckt den größten Teil des Bildes und es sieht im Allgemeinen scheiße aus.

Ich habe eine GridView für Landscape-Modus. Das Problem, das ich jetzt habe, ist, es von der Galerieaktivität zur Gridview-Aktivität zu ändern, wenn sich die Ausrichtung ändert. Irgendwelche Ideen?

+0

http://www.tekkie.ro/quick-n-dirty/how-to-change-your-layout-in-android-landscape-portrait-mode/ – waqaslam

Antwort

1

Fügen Sie diese auf Ihre Aktivität:

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 

    startActivity(newActivity) 
} 

Beachten Sie, dass dies eine schlechte Idee ist. Eigentlich ist es eine wirklich schlechte Idee. Eine viel bessere Alternative wäre, entweder eine Ausrichtung zu erzwingen oder ein Layout zu erstellen, das in beiden Richtungen gut aussieht.

+0

Danke das funktioniert. Für andere Leute, die dies lesen, müssen Sie android: configChanges = "orientation" zu Ihrem Manifest hinzufügen. –

+0

Und warum ist das eine schlechte Idee? –

+0

@Matthew Lueder onConfigurationChanged() soll eigentlich dazu dienen, Daten von einer Orientierungsänderung zur nächsten zu bewahren. Theoretisch könnte ein Benutzer unter der Implementierung, die ich zeigte, die Ausrichtung sehr ändern und einen großen Rückstau von Aktivitäten aufbauen, der für den Benutzer ein unbeabsichtigtes Zurück-Schaltflächenverhalten erzeugen würde (zumindest nehme ich an). Stellen Sie also sicher, dass Sie auch finish() verwenden. Kurz gesagt, benutze es sehr sorgfältig und nur wenn du unbedingt Aktivitäten starten musst. –

2

eine zusätzliche Layout-XML-Datei für Landscape-Modus und nutzen es in den Ordner „Layout-Land“

6

Der richtige Weg zu tun, setzen sie zwei Layouts zu definieren ist, eine im Layout-Port und einen in layou- Landverzeichnisse. Das heißt, Sie haben die folgenden zwei Layouts: res/layout-port/main.xml und res/layout-land/main.xml.

In Ihrer Software schreiben Sie einfach secContentView(R.layout.main); und Android kümmert sich um das richtige Layout bei der Gerätedrehung.

Verwandte Themen