屏幕旋转会改变设备配置(device configguration)。设备设置的特征有:屏幕方向、屏幕像素密度、屏幕尺寸、键盘类型、底座模式以及语言等。
当屏幕发现旋转时(设备配置更改),Android会销毁当前Activity,为新配置寻找最佳资源。
Step1.创建水平模式布局
右键res目录→New→Android resource directory
单击>>后选择Landscape(横屏)选项
点OK后发现res/layout-land目录下没有布局资源
注意:
切换至project视图创建即可,效果如下图
虽然切换资源是个不错的主意,但是屏幕旋转会导致activity销毁与新建,即数据丢失。
同时,Android有一个解决此类问题的好办法。
onSaveInstanceState方法,该方法会将数据以Map形式存储
1 public class MainActivity extends AppCompatActivity { 2 private static final String KEY_INDEX="index"; 3 int mCurrentIndex; 4 @Override 5 protected void onCreate(Bundle savedInstanceState) { 6 super.onCreate(savedInstanceState); 7 setContentView(R.layout.activity_main); 8 if(savedInstanceState!=null) 9 mCurrentIndex=savedInstanceState.getInt(KEY_INDEX,0); 10 } 11 12 @Override 13 protected void onSaveInstanceState(Bundle outState) { 14 super.onSaveInstanceState(outState); 15 outState.putInt(KEY_INDEX,mCurrentIndex); 16 } 17 }
新增一个常量mCurrentIndex,在onCreate()方法中赋值给它