Je souhaite simplement définir des indicateurs lorsque mon orientation est en mode paysage. Ainsi, lorsque l'activité est recréée dans onCreate (), je peux basculer entre les éléments à charger en mode portrait et mode paysage. J'ai déjà un XML de mise en page qui gère ma mise en page.
public void onConfigurationChanged(Configuration _newConfig) {
if (_newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
this.loadURLData = false;
}
if (_newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
this.loadURLData = true;
}
super.onConfigurationChanged(_newConfig);
}
Une utilisation excessive de onConfigurationChanged empêchera mon XML XML Lay-Land de se charger en orientation Paysage.
Je veux juste obtenir l'orientation actuelle de mon périphérique dans onCreate (). Comment puis-je l'obtenir?
Activity.getResources().getConfiguration().orientation
int orientation = this.getResources().getConfiguration().orientation;
if (orientation == Configuration.ORIENTATION_PORTRAIT) {
// code for portrait mode
} else {
// code for landscape mode
}
Lorsque la superclasse de this
est Context
Sur certains appareils, void onConfigurationChanged()
peut se bloquer. L'utilisateur utilisera ce code pour obtenir l'orientation actuelle de l'écran.
public int getScreenOrientation()
{
Display getOrient = getActivity().getWindowManager().getDefaultDisplay();
int orientation = Configuration.ORIENTATION_UNDEFINED;
if(getOrient.getWidth()==getOrient.getHeight()){
orientation = Configuration.ORIENTATION_SQUARE;
} else{
if(getOrient.getWidth() < getOrient.getHeight()){
orientation = Configuration.ORIENTATION_PORTRAIT;
}else {
orientation = Configuration.ORIENTATION_LANDSCAPE;
}
}
return orientation;
}
Et utilise
if (orientation==1) // 1 for Configuration.ORIENTATION_PORTRAIT
{ // 2 for Configuration.ORIENTATION_LANDSCAPE
//your code // 0 for Configuration.ORIENTATION_SQUARE
}
int rotation = getWindowManager().getDefaultDisplay().getRotation();
ceci donnera toutes les orientations normales et inverses
et le manipuler comme
int angle = 0;
switch (rotation) {
case Surface.ROTATION_90:
angle = -90;
break;
case Surface.ROTATION_180:
angle = 180;
break;
case Surface.ROTATION_270:
angle = 90;
break;
default:
angle = 0;
break;
}
getActivity().getResources().getConfiguration().orientation
cette commande renvoie la valeur int 1 pour Portrait et 2 pour Paysage
Si quelqu'un souhaite obtenir la description de l'orientation significative (comme celle passée à onConfigurationChanged(..)
avec ceux reverseLandscape
, sensorLandscape
et ainsi de suite), utilisez simplement getRequestedOrientation()
Dans votre classe d'activité, utilisez la méthode ci-dessous:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Checks the orientation of the screen
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
setlogo();// Your Method
Log.d("Daiya", "ORIENTATION_LANDSCAPE");
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
setlogoForLandScape();// Your Method
Log.d("Daiya", "ORIENTATION_PORTRAIT");
}
}
Ensuite, pour déclarer que votre activité gère un changement de configuration, éditez l'élément approprié dans votre fichier manifeste afin d'inclure l'attribut Android:configChanges
avec une valeur représentant la configuration que vous souhaitez gérer. Les valeurs possibles sont répertoriées dans la documentation de l'attribut Android:configChanges
(les valeurs les plus utilisées sont "orientation" pour empêcher les redémarrages lorsque l'orientation de l'écran change et "keyboardHidden" pour empêcher les redémarrages lorsque la disponibilité du clavier change). Vous pouvez déclarer plusieurs valeurs de configuration dans l'attribut en les séparant avec un tube | personnage.
<activity Android:name=".MyActivity"
Android:configChanges="orientation|keyboardHidden"
Android:label="@string/app_name">
C'est tout!!
si vous souhaitez remplacer cette méthode onConfigurationChanged et que vous souhaitez tout de même qu'elle effectue les tâches de base, envisagez d'utiliser super.onConfigyrationChanged () comme première instruction de la méthode surchargée.
Je veux juste proposer une autre alternative qui concernera certains d'entre vous:
Android:configChanges="orientation|keyboardHidden"
implique que nous déclarons explicitement la disposition à injecter.
Au cas où nous souhaiterions conserver l'injection automatique grâce aux dossiers de mise en page et de mise en page Tout ce que vous avez à faire est de l'ajouter à onCreate:
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
getSupportActionBar().hide();
} else if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
getSupportActionBar().show();
}
Ici, nous affichons ou non la barre d’action en fonction de l’orientation du téléphone