Question Modifier l'orientation de l'écran par programmation à l'aide d'un bouton


Je pense que cela est réalisable puisque le comportement de rotation de l’écran peut aller jusqu’au niveau de l’application.


64
2017-08-16 07:38


origine


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);

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


149
2017-08-16 07:43



Oui, vous pouvez définir l'orientation de l'écran par programmation à tout moment vous voulez utiliser:

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 d'activité, il peut donc être utilisé dans votre activité.

Et c'est comme ça que tu peux obtenir l'orientation actuelle de l'écran et le 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/

MODIFIER

En outre, vous pouvez obtenir l’orientation de l’écran à l’aide de Configuration:

Activity.getResources().getConfiguration().orientation

27
2017-08-16 07:52



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"

15
2017-08-16 09:20



Dans la mesure du possible, n'utilisez pas SCREEN_ORIENTATION_LANDSCAPE ou SCREEN_ORIENTATION_PORTRAIT. Au lieu de cela, utilisez:

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

Celles-ci permettent à l'utilisateur d'orienter l'appareil vers une orientation paysage ou une orientation portrait, respectivement. Si vous avez déjà eu à jouer à un jeu avec un câble de charge enfoncé dans votre estomac, alors vous savez exactement pourquoi les deux orientations sont importantes pour l'utilisateur.

Remarque: pour les téléphones, au moins plusieurs que j'ai cochés, il ne permet que le mode portrait "vers le 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 moins (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);

14
2017-08-10 17:58



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);
    }
}

appeler cette méthode dans votre clic sur le bouton


1
2018-03-28 10:27