PORTRAIT & LANDSCAPE Modus

J

joschika77

Fortgeschrittenes Mitglied
1
Hallo, wie kann man am einfachsten zwischen PORTRAIT & LANDSCAPE Modus umschalten? Ich habe eine Activity die den Portaitmodus repräsentiert & möchte einfach zu meiner selbst erstellten z.B. landcape.xml wechseln. Ist das so überhaupt möglich?
Ich habe folgende Methode dazu überschrieben:
Code:
public void onConfigurationChanged(Configuration newConfig)
und in der manifest was eingetragen.

Wie ist der genaue Ablauf?

MfG
 
die onConfigurationChanged wird aufgerufen, wenn du zb das händy drehst, oder die tastatur öffnest ( sofern eine vorhanden ;) )

wenn du absichtlich den modus ändern willst, dann gibts ne methode, die heißt setOrientation(xx)
 
Dafür ist auch der OrientationEventListener verfügbar, welcher NUR
auf bei Änderung der Displayausrichtung reagiert. Abfangen muss
man hier nur den Sonderfall des flach liegenden Handys (resultiert
in Rückgabe des Werts ORIENTATION_UNKNOWN). Im Gegensatz
zum onConfigurationChanged Listener muss man nicht eine ganze
Configuration auf Änderungen auswerten, was sich positiv in der
Performance niederschlagen sollte.

OrientationEventListener | Android Developers
 
@swordi: Ja ne das weiß ich, aber wie lade ich bei Tastatur aufklappen z.B eine neue xml Datei? Also das müßte ich theoretisch in der onConfigurationChanged Methode machen. Oder wie is das?
 
das passiert eigentlich automatisch

du musst nur die xml für landscape in den ordner layout-land legen

dann werden diese geladen
 
Also ich habe nur einen layout Ordner. Dort sind alle *.xml Dateien drin die ich habe. Muss ich in diesen Ordner noch einen anlegen?
 
Du legst einen Ordner res/layout-land an. Du kannst auch res/drawables-port anlegen. Oder res/values-de-port-92dpi/. Es werden jeweils automatisch die Resources verwendet, bei denen am meisten Angaben übereinstimmen.

Mehr Informationen:

Resources and Internationalization | Android Developers
 
Also den Ordner res/layout-land habe ich angelegt. Und meine *.xml dort reingepackt. Ich habe jetzt sozusagen 2 layout Ordner. Also den res/layout, wo meine normalen xml's drin sind &
res/layout-land wo eben die ich sage mal veränderte xml drin ist. Ist das soweit richtig? Kann eigentlich nicht weil es geht nicht. Ich glaube ich verstehe was falsch hier. :confused:
 
jop so ist es richtig

hab ich auch immer so gemacht.

res
main.xml
res-land
main.xml

dazu darfst du aber jetzt den orientation change nicht mehr abfangen, sonst reagiert das hier nicht
 
Du meinst die Methode
Code:
public void onConfigurationChanged(Configuration newConfig)
?

Die habe ich mal auskommentiert & leider gehts trotzdem nicht. Im Ordner res/layout liegen sämtliche xml Dateien, unter anderem die(bei mir heisst die so) main_320x480.xml. Nun habe ich den 2. Ordner angelegt res/layout-land & habe die main_320x480.xml kopiert. Dann habe ich die Datei ein wenig verändert um etwas visuelles zu haben. Dorf die Datei nur main heißen oder so?
 
nein völlig egal wie sie heißt

du lädst sie ja mit setContentView

in der manifest datei hast auch nix mehr stehen?
 
In der main.java lade ich die so
Code:
public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_320x480_portrait);  
        /*..irgendwas....*/
}

So nun schalte ich um(ich teste am Emu (STRG+F12)) und nix passiert. Müßte die setContentView doch nochmal irgendwo aufrufen. Der weiß doch gar nicht welche Datei er nehmen soll oder was? Seltsam! Was meinst mit der mainfest?
 
ja wenn du auf landscape umschaltest wird die onCreate ja wieder aufgerufen, dann nimmt er die richtige xml aus dem layout-land ordner

hast irgendwelche einträge zu orientation oder configuration in der manifest?? die müssen alle weg
 
Hab nur
Code:
android:configChanges="orientation|keyboardHidden"
drin. Wenn ichs rausnehme stürzt er beim Tastatur-Öffnen ab.
 
ja das solltest du rausnehmen, glaub ich

dann dem absturz nach gehen, muss an irgendwas anderem liegen dann
 
Hmmm ich arbeite noch mit sqlite. Und bei der destroy() Methode schliesse ich die Connection. Also wenn ich wieder bei der
Code:
setContentView(R.layout.main_320x480);
bin und weiter debugge geht SQLiteCursor.class auf und dort steht Class File Editor Source not found und noch anderer Kram. Mach ich was falsch beim DB schliessen? Er schmeißt ne uncaught exception thrown by finalizer.
 
kann deinen beschreibungen nicht so ganz folgen.

aber der fehler liegt nicht mehr mit der orientierung des screens zusammen, das sollte jetzt dann funktionieren
 
Ok Thx euch! Werde dann mal weiter nach dem SQLite Fehler suchen. Falls ich nicht weiter komme mache ich ein neues Thema auf.
 
jop mach das - viel erfolg ;)
 

Ähnliche Themen

R
Antworten
2
Aufrufe
696
swa00
swa00
Gemini-Media
Antworten
1
Aufrufe
1.805
swa00
swa00
K
Antworten
3
Aufrufe
1.130
swa00
swa00
Zurück
Oben Unten