Réponses:
Oui, c'est réalisable!
ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
ActivitéInfo
http://developer.android.com/reference/android/content/pm/ActivityInfo.html
Référez-vous au lien:
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
Oui, vous pouvez définir l'orientation de l'écran par programme à tout moment en utilisant:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
pour le mode paysage et portrait respectivement. La méthode setRequestedOrientation () est disponible pour la classe Activity , elle peut donc être utilisée dans votre Activity.
Et voici comment vous pouvez obtenir l'orientation actuelle de l'écran et la définir de manière adéquate en fonction de son état actuel:
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;
}
}
});
Tiré d'ici: http://techblogon.com/android-screen-orientation-change-rotation-example/
ÉDITER
En outre, vous pouvez obtenir l'orientation de l'écran à l'aide de Configuration
:
Activity.getResources().getConfiguration().orientation
getRequestedOrientation()
pour obtenir l'orientation actuelle de l'écran: stackoverflow.com/a/21909327/1037294
getRequestedOrientation()
vous donne UNSPECIFIED
lorsque vous démarrez l'application. Donc, avec l'auditeur ci-dessus, cela ne changera pas d'écran et si vous ajoutez UNSPECIFIED
à switch
cela, il devrait d'abord mettre l'écran dans l'une des positions Portrait / Paysage .
Dans la mesure du possible, veuillez ne pas utiliser SCREEN_ORIENTATION_LANDSCAPE ou SCREEN_ORIENTATION_PORTRAIT. Utilisez plutôt:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
Ceux-ci permettent à l'utilisateur d'orienter l'appareil soit en orientation paysage, soit en orientation portrait, respectivement. Si vous avez déjà eu à jouer à un jeu avec un câble de charge enfoncé dans votre estomac, vous savez exactement pourquoi il est important pour l'utilisateur d'avoir les deux orientations disponibles.
Remarque: pour les téléphones, au moins plusieurs que j'ai vérifiés, il n'autorise que le mode portrait «côté droit en haut», cependant, SENSOR_PORTRAIT fonctionne correctement sur les tablettes.
Remarque: cette fonctionnalité a été introduite dans l'API niveau 9, donc si vous devez prendre en charge 8 ou une version inférieure (peu probable à ce stade), utilisez à la place:
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);
Utilisez ceci pour définir l'orientation de l'écran:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
ou
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
et n'oubliez pas d'ajouter ceci à votre manifeste:
android:configChanges = "orientation"
"orientation|screenSize"
, regardez ici: developer.android.com/guide/topics/resources/…
Un code fonctionnel:
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);
}
}
appelez cette méthode en cliquant sur votre bouton