android横竖屏切换
来源:互联网 发布:淘宝网货到付款 编辑:程序博客网 时间:2024/06/07 03:09
处理横竖屏切换
1:禁止屏幕旋转
在AndroidManifest的Activity中配置
始终竖屏
android:scteenOrientation="portrait"
始终横屏
android:screenOrientation="landscape"
2:Activity跟随旋转但不销毁和重启
告诉系统这个activiry的旋转处理是由自己处理,不用帮我销毁和重启
在AndroidManifest.xml的Activity中配置
android:configChanges="keyboardHidden|orientation|screenSize"
然后在Activity中进行方法复写,监听屏幕旋转并处理
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Toast.makeText(MainActivity.this, "竖屏模式", 3000).show();
} else {
Toast.makeText(MainActivity.this, "横屏模式", 3000).show();
}
}
3:Activity进行默认旋转时候的处理,当屏幕进行旋转的时候会按照横屏的分辨率进行重绘,
当然你也可以不进行任何处理难看就难看呗:),理想状态的处理就是建立两套同名的Layout,当屏幕旋转时系统会自动帮我们加载横屏的Layout。
首先在工程res目录下新建一个layout-land 这个目录下是专门为横屏Layout准备的
例如:res/layout/activity_main.xml
res/layou-land/activity_main.xml
建立一个同名不同样的布局文件就Ok了
4:运行后可以看到,我们已经为TextView设置了值但是屏幕旋转后值却不见了,这是因为之前说过的屏幕旋转后系统自动帮我们销毁了Activity所以之前设置的东西就不见了,这个怎么去解决呢?
这就要靠Android系统给我们提供的onSaveInstanceState和onRestoreInstanceState来进行数据的保存和恢复,onSaveInstanceState会在onDestroy之前被调用,我们可以利用它来进行一些数据的保存,
这里我们保存TextView设置的值。
//保存Activity数据
@Override
protected void onSaveInstanceState(Bundle outState) {
outState.putString("textview", mTextView.getText().toString());
super.onSaveInstanceState(outState);
}
然后我们在重启Activity后如何得到之前保存的数据呢?这里有两种方法
1:在onCreate中
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView=(TextView)findViewById(R.id.textView);
//恢复数据
if (savedInstanceState != null) {
// Restore value of members from saved state
mTextView.setText(savedInstanceState.getString("textview"));
}
}
可以看到,onCreate的万年不用的Bundle对象终于让我们用上了。
2:第二种方法是复写onRestoreInstanceState方法
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
mTextView.setText(savedInstanceState.getString("textview"));
}
这里不需要判断Bundle对象是否为空,因为系统仅仅会在存在需要恢复的状态信息时才会调用 onRestoreInstanceState()
这样Activity尽享销毁重建后数据依然存在
1:禁止屏幕旋转
在AndroidManifest的Activity中配置
始终竖屏
android:scteenOrientation="portrait"
始终横屏
android:screenOrientation="landscape"
2:Activity跟随旋转但不销毁和重启
告诉系统这个activiry的旋转处理是由自己处理,不用帮我销毁和重启
在AndroidManifest.xml的Activity中配置
android:configChanges="keyboardHidden|orientation|screenSize"
然后在Activity中进行方法复写,监听屏幕旋转并处理
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Toast.makeText(MainActivity.this, "竖屏模式", 3000).show();
} else {
Toast.makeText(MainActivity.this, "横屏模式", 3000).show();
}
}
3:Activity进行默认旋转时候的处理,当屏幕进行旋转的时候会按照横屏的分辨率进行重绘,
当然你也可以不进行任何处理难看就难看呗:),理想状态的处理就是建立两套同名的Layout,当屏幕旋转时系统会自动帮我们加载横屏的Layout。
首先在工程res目录下新建一个layout-land 这个目录下是专门为横屏Layout准备的
例如:res/layout/activity_main.xml
res/layou-land/activity_main.xml
建立一个同名不同样的布局文件就Ok了
4:运行后可以看到,我们已经为TextView设置了值但是屏幕旋转后值却不见了,这是因为之前说过的屏幕旋转后系统自动帮我们销毁了Activity所以之前设置的东西就不见了,这个怎么去解决呢?
这就要靠Android系统给我们提供的onSaveInstanceState和onRestoreInstanceState来进行数据的保存和恢复,onSaveInstanceState会在onDestroy之前被调用,我们可以利用它来进行一些数据的保存,
这里我们保存TextView设置的值。
//保存Activity数据
@Override
protected void onSaveInstanceState(Bundle outState) {
outState.putString("textview", mTextView.getText().toString());
super.onSaveInstanceState(outState);
}
然后我们在重启Activity后如何得到之前保存的数据呢?这里有两种方法
1:在onCreate中
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView=(TextView)findViewById(R.id.textView);
//恢复数据
if (savedInstanceState != null) {
// Restore value of members from saved state
mTextView.setText(savedInstanceState.getString("textview"));
}
}
可以看到,onCreate的万年不用的Bundle对象终于让我们用上了。
2:第二种方法是复写onRestoreInstanceState方法
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
mTextView.setText(savedInstanceState.getString("textview"));
}
这里不需要判断Bundle对象是否为空,因为系统仅仅会在存在需要恢复的状态信息时才会调用 onRestoreInstanceState()
这样Activity尽享销毁重建后数据依然存在
0 0
- Android 横竖屏切换
- Android横竖屏'切换
- Android横竖屏切换
- Android 横竖屏切换
- Android横竖屏切换
- android 横竖屏切换
- android 横竖屏切换
- Android横竖屏切换
- Android 横竖屏切换
- android切换横竖屏
- android 横竖屏切换
- Android横竖屏切换
- android 横竖屏切换
- Android横竖屏切换
- android 横竖屏切换
- Android横竖屏切换
- Android横竖屏切换
- Android横竖屏切换
- IO - 同步,异步,阻塞,非阻塞
- 数据库常用函数总结(一)
- Eclipse maven工程如何builde target
- Java 序列化Serializable详解(附详细例子)
- android根文件系统目录结构
- android横竖屏切换
- 【数据结构】常见的排序方法的实现以及性能对比
- ext4.2.1路径
- CREATING AN ANGULAR 2 BUILD WITH GULP, TSLINT AND DEFINITELYTYPED
- 纯前端Wijmo 放大招 ! 汉化Demo来了
- MyEclipse8.5集成Tomcat7时的启动错误:Exception in thread “main” java.lang.NoClassDefFoundError org/apache/com
- 窗口化Activity实现效果
- numpy读写文件
- Flatten Binary Tree to Linked List