Je pense que cela est réalisable car le comportement de la rotation de l'écran peut aller jusqu'au niveau de l'application.
Oui, c'est réalisable!
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
Référer le 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 à l'aide de:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
pour les modes paysage et portrait respectivement. La méthode setRequestedOrientation () est disponible pour la classe d'activité et peut donc être utilisée dans votre activité.
Et voici comment vous pouvez obtenir l'orientation actuelle de l'écran et la définir correctement 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/
MODIFIER
En outre, vous pouvez obtenir l'orientation de l'écran à l'aide de la touche Configuration
:
Activity.getResources().getConfiguration().orientation
Dans la mesure du possible, n'utilisez pas SCREEN_ORIENTATION_LANDSCAPE ou SCREEN_ORIENTATION_PORTRAIT. Utilisez plutôt:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
Celles-ci permettent à l'utilisateur d'orienter le périphérique soit vers l'orientation paysage, soit vers l'orientation portrait. Si vous avez déjà eu à jouer à un jeu avec un câble de charge enfoncé dans votre estomac, vous savez alors exactement pourquoi il est important que les deux orientations soient disponibles.
Remarque: pour les téléphones, au moins plusieurs de ceux que j'ai cochés, le mode portrait est uniquement autorisé, mais SENSOR_PORTRAIT fonctionne correctement sur les tablettes.
Remarque: cette fonctionnalité a été introduite dans l'API niveau 9. Par conséquent, si vous devez prendre en charge une version inférieure ou égale à 8 (probablement pas à ce stade), utilisez plutôt:
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"
Un code de travail:
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