Je pense que cela est réalisable puisque le comportement de rotation de l'écran peut aller jusqu'au niveau de l'application.
Réponses
Trop de publicités?Oui, c'est réalisable !
ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE (en anglais)
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érez-vous à la 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 quand vous voulez en utilisant :
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
pour le mode paysage et le mode portrait respectivement. La méthode setRequestedOrientation() est disponible pour la classe d'activité pour qu'il puisse être utilisé dans votre activité.
Et c'est ainsi que vous pouvez obtenir l'orientation actuelle de l'écran et le régler 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/
EDIT
Vous pouvez également obtenir l'orientation de l'écran en utilisant la fonction Configuration
:
Activity.getResources().getConfiguration().orientation
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);
Ils permettent à l'utilisateur d'orienter l'appareil en mode paysage ou en mode portrait, respectivement. Si vous avez déjà dû jouer à un jeu avec un câble de chargement enfoncé dans l'estomac, vous savez exactement pourquoi il est important pour l'utilisateur de disposer des deux orientations.
Note : Pour les téléphones, du moins plusieurs que j'ai vérifiés, il ne permet que le mode portrait "à l'endroit", cependant, SENSOR_PORTRAIT fonctionne correctement sur les tablettes.
Remarque : cette fonctionnalité a été introduite dans le niveau 9 de l'API, donc si vous devez prendre en charge le niveau 8 ou inférieur (ce qui est peu probable à 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);
Un code qui fonctionne :
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 dans le clic de votre bouton
- Réponses précédentes
- Plus de réponses