Change screen orientation in Android without reloading the activity

十年热恋 提交于 2019-11-27 17:10:12

问题


I want to change the orientation programmatically while running my Android App, with these lines of code:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);  
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);

They work so far, but the main problem is that the whole activity is reloaded when the screen orientation changes, and I don't want that. Is it possible? Thanks.

EDIT: OK, after I while I found out what I was missing. I had to include also "screenSize" in the configChanges property, so having

android:configChanges="orientation|screenSize"

solved the whole thing.


回答1:


See the edit by @luisfer. For targeting Android 3.2 and above, you need BOTH

android:configChanges="orientation|screenSize"

http://developer.android.com/guide/topics/resources/runtime-changes.html#HandlingTheChange




回答2:


You need to override onSaveInstanceState(Bundle savedInstanceState) and write the application state values you want to change to the Bundle parameter




回答3:


In AndroidManifest file add android:configChanges="orientation" for the activity you want to handle this orientation

In activity use onConfigurationChange overrided method. Do task you want to handle in orientation change.




回答4:


Ansewered here:

Android, how to not destroy the activity when I rotate the device?

Add:

android:configChanges="orientation"

To your androidmanifest.

see:

http://developer.android.com/guide/topics/manifest/activity-element.html#config




回答5:


Call this method And Set manifest file

android:configChanges="orientation|screenSize|keyboardHidden"

public void onConfigurationChanged(Configuration newConfig) {
     super.onConfigurationChanged(newConfig);

        // Checks the orientation of the screen
        if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
            Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
        } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
            Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
        }
    }


来源:https://stackoverflow.com/questions/14873755/change-screen-orientation-in-android-without-reloading-the-activity

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!