您的位置:首页 > 移动开发 > Android开发

Android横竖屏切换小结

2017-12-24 15:22 441 查看
一、重启Activity的横竖屏切换

Adnroid 3.2以后的SDK
1、android:configChanges="orientation|keyboardHidden"
生命周期执行顺序:

//未执行切换屏幕

onCreate(Bundle savedInstanceState)

onStart()

onResume()

//开始执行切换屏幕

onConfigurationChanged (Configuration newConfig)

onPause()

onSaveInstanceState(Bundle outState)

onStop()

onDestroy()

onCreate(Bundle savedInstanceState)

onStart()

onRestoreInstanceState(Bundle savedInstanceState)

onResume()

//执行切换屏幕到恢复显示正常

//开始执行finish()方法

onPause()

onStop()

onDestroy()

2、android:configChanges="....."不在AndroidManifest.xml注入,不会执行onConfigurationChanged (Configuration newConfig)方法

//未执行切换屏幕

onCreate(Bundle savedInstanceState)

onStart()

onResume()

//开始执行切换屏幕

onPause()

onSaveInstanceState(Bundle outState)

onStop()

onDestroy()

onCreate(Bundle savedInstanceState)

onStart()

onRestoreInstanceState(Bundle savedInstanceState)

onResume()

//执行切换屏幕到恢复显示正常

//开始执行finish()方法

onPause()

onStop()

onDestroy()

二、非重启Activity的横竖屏切换

Andorid 3.2以前的SDK可以使用如下配置

1、android:configChanges="orientation|keyboardHidden"

而Adnroid 3.2以后的SDK必须添加一个screenSize属性,具体如下

3、android:configChanges="orientation|screenSize"

4、android:configChanges="keyboardHidden|orientation|screenSize"

生命周期执行顺序:

//未执行切换屏幕

onCreate(Bundle savedInstanceState)

onStart()

onResume()

//开始执行切换屏幕

onConfigurationChanged (Configuration newConfig)

//开始执行finish()方法

onPause()

onStop()

onDestroy()

参考代码区域:

    @Override

    public void onConfigurationChanged (Configuration newConfig){

    super.onConfigurationChanged(newConfig);

    int mCurrentOrientation = getResources().getConfiguration().orientation;

    if ( mCurrentOrientation == Configuration.ORIENTATION_PORTRAIT ) {
// If current screen is portrait
// ......

    } else if ( mCurrentOrientation == Configuration.ORIENTATION_LANDSCAPE ) {

        //If current screen is landscape
// ......

    }

    //屏幕横竖屏切换

    private void changeScreem(){
if(isScreenPortrait()){
//切换至横屏
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}else {
//切换至竖屏
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
    }

Android横竖屏切换小结    https://www.cnblogs.com/franksunny/p/3714442.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: