2013-08-16 13 views

Antwort

133

Ja, es ist implementierbar!

ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

ActivityInfo.SCREEN_ORIENTATION_PORTRAIT

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

ActivityInfo

http://developer.android.com/reference/android/content/pm/ActivityInfo.html

Siehe die Link:

Button buttonSetPortrait = (Button)findViewById(R.id.setPortrait); 
Button buttonSetLandscape = (Button)findViewById(R.id.setLandscape); 

buttonSetPortrait.setOnClickListener(new Button.OnClickListener(){ 

    @Override 
    public void onClick(View arg0) { 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
    } 

}); 

buttonSetLandscape.setOnClickListener(new Button.OnClickListener(){ 

    @Override 
    public void onClick(View arg0) { 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
    } 

}); 

http://android-er.blogspot.in/2011/08/set-screen-orientation-programmatically.html

+0

Danke. Aber muss diese Funktion auf einem gerooteten Gerät ausgeführt werden? Es funktioniert nicht auf meinem Handy, aber auf meinem verwurzelten Tablet. – Sam

+0

Nein, es ist nicht so .. Eigentlich habe ich den Code in diesem Link vor dem Posten getestet .. Es funktionierte in meinem Gerät .. – Hariharan

+0

okay, ja, du hast recht. Ich habe gerade ein anderes Gerät getestet und es funktioniert gut. nun, mein Samsung Galaxy Nexus funktioniert nicht. Ich weiß nicht warum. – Sam

24

Ja, können Sie stellen Sie die Bildschirmausrichtung programmatisch wann immer Sie wollen mit:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

für Landschafts- und Portrait-Modus sind. Die setRequestedOrientation() -Methode ist für die Aktivitätsklasse verfügbar, sodass sie in Ihrer Aktivität verwendet werden kann.

Und so können Sie die Ausrichtung aktuellen Bildschirm erhalten und setzen Sie ihn adäquat abhängig von seinem aktuellen Zustand:

Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay(); 
final int orientation = display.getOrientation(); 
// OR: orientation = getRequestedOrientation(); // inside an Activity 

// set the screen orientation on button click 
Button btn = (Button) findViewById(R.id.yourbutton); 
btn.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 

       switch(orientation) { 
        case Configuration.ORIENTATION_PORTRAIT: 
         setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
         break; 
        case Configuration.ORIENTATION_LANDSCAPE: 
         setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
         break;     
       } 
      } 
    }); 

von hier genommen: http://techblogon.com/android-screen-orientation-change-rotation-example/

EDIT

Auch Sie können die Bildschirmausrichtung mit dem Configuration:

erhalten
+2

Ich würde vorschlagen, 'getRequestedOrientation()' zu verwenden, um die aktuelle Bildschirmausrichtung zu erhalten: http://stackoverflow.com/a/21909327/1037294 –

+0

Erschöpfende Antwort. – pdegand59

14

Damit wird die Ausrichtung des Bildschirms einzustellen:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

oder

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

und vergessen Sie nicht, diese zu Ihrem Manifest hinzuzufügen:

android:configChanges = "orientation" 
+2

Sie benötigen beide "" orientation | screenSize "', Sehen Sie hier: https://developer.android.com/guide/topics/resources/runtime-changes.html#HandlingTheChange – Benny

+0

api 27, es ist fehlerhaft, verwenden Sie nicht Manifest Möglichkeit – Mike

12

Wo immer möglich Bitte verwenden Sie SCREEN_ORIENTATION_LANDSCAPE oder SCREEN_ORIENTATION_PORTRAIT nicht. Stattdessen verwenden:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); 
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT); 

Diese der Benutzer ermöglichen, das Gerät entweder im Querformat zu orientieren, oder jedes Hochformat, respectively. Wenn Sie jemals ein Spiel spielen mussten, bei dem ein Ladekabel in den Magen getrieben wurde, dann wissen Sie genau, warum es für den Benutzer wichtig ist, beide Orientierungen verfügbar zu haben.

Hinweis: Für Telefone, mindestens einige, die ich überprüft habe, erlaubt es nur die "richtige Seite nach oben" Hochformat, aber SENSOR_PORTRAIT funktioniert ordnungsgemäß auf Tablets.

Hinweis: Diese Funktion wurde in API Ebene 9, eingeführt, so, wenn Sie 8 oder niedriger unterstützen muss (wahrscheinlich nicht an dieser Stelle), dann verwenden Sie stattdessen:

setRequestedOrientation(Build.VERSION.SDK_INT < 9 ? 
         ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE : 
         ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); 
setRequestedOrientation(Build.VERSION.SDK_INT < 9 ? 
         ActivityInfo.SCREEN_ORIENTATION_PORTRAIT : 
         ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT); 
Verwandte Themen