2016-04-21 5 views
0

Ich versuche, Benutzern meiner App zu ermöglichen, die Benutzeroberfläche entweder als Standardausrichtung oder als "Lefty Flip" zu aktivieren. Ich bin mir nicht sicher, wie niedrig eine Lösung ist, die ich programmieren muss, wenn man bedenkt, dass Android eine abstrahierte Möglichkeit bietet, dies einfach zu tun.Android: Programmatisches Ändern des XML-Layouts in "Lefty Flip"

Optisch die Standardorientierung wäre: standard layout

und die Lefty Flip Orientierung wäre: enter image description here

Also, zur Zeit, was ich denke zu versuchen, ist eine manuelle Umlagerung der XML-Layout, Komponente nach Komponente, innerhalb der onTouch() - Logik eines Menü-Buttons.

Ich habe das Gefühl, dass es einen einfacheren Weg als das gibt. Irgendwelche Vorschläge? Gibt es eine Reihe programmatischer Aufrufe, um die Ansicht auf die beste Weise neu anzuordnen? Xml-Datei unten.

<?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="horizontal" 
    android:baselineAligned="false" 
    android:keepScreenOn="true"> 

    <LinearLayout  
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1.40" 
     android:orientation="vertical" 
     android:id="@+id/toolbarGestureOverlay" > 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:layout_weight="3.60" 
     android:id="@+id/openglsurface"> 
    </LinearLayout>  
</LinearLayout> 
+0

Wie weit zurück wollen Sie unterstützen? Ab 4.2+ können Sie die layoutDirection des Layouts auf oberster Ebene festlegen. –

Antwort

1

Ich glaube, Sie es mithilfe rotate Funktion archivieren können (von API 11 only):

View view = findViewById(R.id.yourParentLayout); 
view.setRotation(270); 
// you must canculate your screen size to make your view fit your screen. 
view.getLayoutParams().width = 800; 
view.getLayoutParams().height = 480; 
// For flip, you can rotate a long x or y axis: 
view.setRotationY(180); 
+0

Entschuldigung, das wird nicht funktionieren, weil die linke Flip-Ansicht keine einfache Rotation der Standardansicht ist. Die blaue Ansicht für den linken Flip ist keine einfache Rotation, sie wird vertikal gespiegelt. – Cody

+0

@Cody Hast du es jemals versucht? Siehst du nicht, dass es um 180 Grad gedreht ist? –

+0

mein Bild ist nicht detailliert genug. Das blaue Layout im linken Flip-Bild wird nicht gedreht, sondern nur um eine vertikale Achse invertiert. Wenn ich das blaue Layout um 180 Grad drehen würde, wäre es auf dem Kopf (Sie können es einfach nicht im Bild erkennen, weil das Zeichen 'X' unabhängig von der Ausrichtung gleich aussieht) – Cody