Android: listen for Orientation change?

前端 未结 3 2069
悲哀的现实
悲哀的现实 2020-12-08 10:12

How would I listen for orientation change in Android? and do certain things when the user has switched to landscape?

相关标签:
3条回答
  • 2020-12-08 10:37

    As of Android 3.2, you also need to add "screenSize" in androidmanifest for specific activity

    So your activity declaration in xml will become

    <activity android:name=".ExampleActivity"
        android:label="@string/app_name"
        android:configChanges="orientation|screenSize">
    
    0 讨论(0)
  • 2020-12-08 10:54

    In your activity, you can override this method to listen to Orientation Change and implement your own code.

    public void onConfigurationChanged (Configuration newConfig)
    

    The Configuration Class has an int constant ORIENTATION_LANDSCAPE and ORIENTATION_PORTRAIT, there for you can check the newConfig like this:

    super.onConfigurationChanged(newConfig);

    int orientation=newConfig.orientation;
    
    switch(orientation) {
    
    case Configuration.ORIENTATION_LANDSCAPE:
    
    //to do something
     break;
    
    case Configuration.ORIENTATION_PORTRAIT:
    
    //to do something
     break;
    
    }
    
    0 讨论(0)
  • 2020-12-08 10:55

    You have a couple of choices:

    • Use an OrientationEventListener, which has a method called onOrientationChanged.

    • Use config changes:

    In your Manifest, put:

    <activity android:name=".HelloAndroid"
        android:label="@string/app_name"
        android:configChanges="orientation">
    

    And, in your Activity, override onConfigurationChanged:

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
    
        int newOrientation = newConfig.orientation;
    
        if (newOrientation == Configuration.ORIENTATION_LANDSCAPE) {
          // Do certain things when the user has switched to landscape.    
        }   
    }
    

    Here is a good tutorial about it.

    0 讨论(0)
提交回复
热议问题