Antworten:
Ja, es ist umsetzbar!
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 den 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-programmatic.html
Ja, Sie können die Bildschirmausrichtung jederzeit programmgesteuert einstellen, indem Sie Folgendes verwenden:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
für Quer- und Hochformat. Die setRequestedOrientation () -Methode ist für die Activity-Klasse verfügbar , sodass sie in Ihrer Activity verwendet werden kann.
Und so können Sie die aktuelle Bildschirmausrichtung abrufen und sie je nach aktuellem Status angemessen einstellen:
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;
}
}
});
Entnommen von hier: http://techblogon.com/android-screen-orientation-change-rotation-example/
BEARBEITEN
Sie können die Bildschirmausrichtung auch über Folgendes abrufen Configuration
:
Activity.getResources().getConfiguration().orientation
getRequestedOrientation()
, die aktuelle Bildschirmausrichtung zu verwenden: stackoverflow.com/a/21909327/1037294
getRequestedOrientation()
gibt Ihnen, UNSPECIFIED
wenn Sie die App starten. Mit dem obigen Listener ändert sich der Bildschirm nicht. Wenn Sie ihn hinzufügen UNSPECIFIED
, switch
sollte der Bildschirm zuerst in die Position " Hochformat" / "Querformat" gebracht werden.
Verwenden Sie nach Möglichkeit nicht SCREEN_ORIENTATION_LANDSCAPE oder SCREEN_ORIENTATION_PORTRAIT. Verwenden Sie stattdessen:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
Diese ermöglichen es dem Benutzer, das Gerät entweder im Querformat oder im Hochformat auszurichten. Wenn Sie jemals ein Spiel mit einem Ladekabel spielen mussten, das in Ihren Magen geführt wird, wissen Sie genau, warum es für den Benutzer wichtig ist, beide Ausrichtungen zur Verfügung zu haben.
Hinweis: Bei Telefonen, von denen mindestens einige überprüft wurden, ist nur der Porträtmodus "mit der rechten Seite nach oben" zulässig. SENSOR_PORTRAIT funktioniert jedoch auf Tablets ordnungsgemäß.
Hinweis: Diese Funktion wurde in API Level 9 eingeführt. Wenn Sie also 8 oder weniger unterstützen müssen (derzeit wahrscheinlich nicht), 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);
Verwenden Sie diese Option, um die Ausrichtung des Bildschirms festzulegen:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
oder
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
und vergessen Sie nicht, dies Ihrem Manifest hinzuzufügen:
android:configChanges = "orientation"
"orientation|screenSize"
. Schauen Sie hier: developer.android.com/guide/topics/resources/…
Ein Arbeitscode:
private void changeScreenOrientation() {
int orientation = yourActivityName.this.getResources().getConfiguration().orientation;
if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
showMediaDescription();
} else {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
hideMediaDescription();
}
if (Settings.System.getInt(getContentResolver(),
Settings.System.ACCELEROMETER_ROTATION, 0) == 1) {
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
}
}, 4000);
}
}
Rufen Sie diese Methode in Ihrem Button-Klick auf