[ANDROID] Comment détecter le changement d'orientation

Résolu
stagiaire_1 Messages postés 17 Date d'inscription   Statut Membre Dernière intervention   -  
scinarf Messages postés 1119 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je souhaite détecter le changement d'orientation de mon terminal android.

J'utilise le code suivant :

@Override
	public void onConfigurationChanged(Configuration newConfig) {
	    super.onConfigurationChanged(newConfig);
	  
	    // Checks the orientation of the screen
	    switch (getResources().getConfiguration().orientation) {
		case Configuration.ORIENTATION_PORTRAIT: setContentView(R.layout.login); break;
		case Configuration.ORIENTATION_LANDSCAPE: setContentView(R.layout.login_landscape); break;
	    }
    
	}


Néanmoins cette méthode n'est jamais appelée même avec un changement d'orientation.

Quelqu'un aurait-il une idée de pourquoi ça ne marche pas?

Merci

A voir également:

1 réponse

scinarf Messages postés 1119 Date d'inscription   Statut Membre Dernière intervention   252
 
Que souhaitez vous faire sur le changement d'orientation ?

Vous pouvez récupérer l'orientation avec :

int i = getResources().getConfiguration().orientation ;
if (i == 1) Toast.makeText(this,"Protrait", 0).show();
else if (i == 2) Toast.makeText(this,"Paysage", 0).show();

Après avoir testé la chose, je vous propose la Class OrientationEventListener

de cette manière dans un nouveau fichier .java dans le même package que votre MainActivity:

import android.content.Context;
import android.view.OrientationEventListener;
import android.widget.Toast;

public class onOrientationChanged extends OrientationEventListener
{
private Context context;

public onOrientationChanged(Context c)
{
super(c);
// TODO Auto-generated constructor stub
context = c;
}

public onOrientationChanged(Context context, int rate) {
super(context, rate);
// TODO Auto-generated constructor stub
}

@Override
public void onOrientationChanged(int orientation)
{
// TODO Auto-generated method stub
int i = orientation;
if (i == 0) Toast.makeText(context,"Protrait", 0).show();
else if (i == 2) Toast.makeText(context,"Paysage", 0).show();
else Toast.makeText(context,"Orientation : " + String.valueOf(i), 0).show();
}

}

Et dans votre MainActivity : Ceci

private onOrientationChanged orientation=null;

dans le onCreate()
orientation = new onOrientationChanged(this);
orientation.enable();

la méthode onOrientationChanged est appelée à chaque changement de position, il ne reste plus que a filtrer sur (int) orientation qui donne les degrés en celsius de l'orientation. (ou des valeurs particulières comme 0 pour portrait et 2 pour paysage)

Bonne chance
0