Android常用代码-横竖屏切换

  1. 1. 自动切换
  2. 2. 手动切换
  3. 3. 注意

自动切换

  • Android Manifest在需要切换的Activity中添加
1
2
android:configChanges="orientation|keyboardHidden|layoutDirection|screenSize|screenLayout"
android:screenOrientation="sensor"
  • res添加layout-land和layout-port文件夹,分别放两套布局。

  • Activity代码中实现

1
2
3
4
5
6
7
8
9
10
11
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if(newConfig.orientation == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT){
//切换到竖屏
setContentView(R.layout.activity_main);
}else{
//切换到横屏
setContentView(R.layout.activity_main);
}
}

手动切换

1
2
3
4
5
6
7
8
9
10
11
12
13
findViewById(R.id.btn_click).setOnClickListener(new View.OnClickListener() {  
@Override
public void onClick(View view) {
//判断当前屏幕方向
if(getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) {
//切换竖屏
MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}else{
//切换横屏
MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
}
});

注意

配置android:configChanges="orientation|keyboardHidden|screenSize",才不会销毁 activity,且只调用onConfigurationChanged方法。