解决Android手机屏幕横竖屏切换

Android中当屏幕横竖屏切换时,Activity的生命周期是重新加载(说明当前的Activity给销毁了,但又重新执行加载),

怎么使屏幕横竖屏切换时,当前的Activity不销毁呢?

1. 在AndroidManifest.xml中为Activity设置configChanges属性,

application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".MainActivity" android:label="@string/app_name" android:configChanges="orientation|keyboardHidden"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application>

configChanges有如下选项:

1. orientation :屏幕在纵向和横向间旋转,

2. keyboardHidden:键盘显示或隐藏 ,

3.fontScale:用户变更了首选的字体大小

4.locale : 用户选择了不同的语言设定,

5.  keyboard :键盘类型变更,例如手机从12键盘切换到全键盘

6. touchscreen或navigation:键盘或导航方式变化,

如果缺少了keyboardHidden选项不能防止Activity的销毁,并且在之后提到的onConfigurationChanged事件中只能捕获竖屏变横屏的事件 不能捕获横屏变竖屏 

2. 在对应的Activity中重写:onConfigurationChanged 方法: 

public class MainActivity extends Activity { private TextView textView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Log.i("--Main--", "onCreate"); textView=(TextView)findViewById(R.id.tv_id); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); Log.i("--Main--", "onConfigurationChanged"); if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE){ textView.setText("当前屏幕为横屏"); }else{ textView.setText("当前屏幕为竖屏"); } } }

效果如下:

日志打印:

从日志中可以分析出屏幕横竖屏切换时Activity并没有销毁,当然你也可以运行项目在onCreate方法打个断点,执行发现onCreate方法只是在刚开始进入时执行,屏幕横竖屏切换时,已经不会在执行,因此可在onConfigurationChanged方法中下点文章!

注:如果项目不需要屏幕切换时可以设置为

1. android:screenOrientation="portrait" 始终以竖屏显示

2. android:screenOrientation="landscape" 始终以横屏显示

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!

时间: 2024-10-30 05:53:19

解决Android手机屏幕横竖屏切换的相关文章

android:configChanges 屏幕横竖屏切换

出处:http://blog.csdn.net/djy1992/article/details/9378195 --->  android:screenOrientation="portrait" 当在AndroidManifest.xml文件中定义了android:screenOrientation="portrait",就表示当我们切换横竖屏的时候,屏幕的内容始终以竖屏显示,而不会根据屏幕的方向来显示内容 AndroidManifest.xml文件   &

Android编程实现横竖屏切换时不销毁当前activity和锁定屏幕的方法_Android

本文实例讲述了Android编程实现横竖屏切换时不销毁当前activity和锁定屏幕的方法.分享给大家供大家参考,具体如下: 首先在Mainifest.xml的Activity元素中加入android:configChanges="orientation|keyboardHidden"属性 <activityandroid:name=".FileBrowser"android:label="@string/app_name"android:

android中Activity横竖屏切换的那些事

讲解之前需要说明的是 旋转屏幕:在系统的自动旋转屏幕开启的情况下,我们旋转屏幕 手动设置屏幕:我们自己去调用Activity的 setRequestedOrientation 方法. 设置屏幕的方向 简介 值 描述 unspecified 默认值.系统自动选择屏幕方向 behind 跟activity堆栈中的下面一个activity的方向一致 landscape 横屏方向,显示的宽比高长 portrait 竖屏方向,显示的高比宽长 sensor 由设备的物理方向传感器决定,如果用户旋转设备,这屏

Android布局之横竖屏切换

在默认情况下当屏幕从竖评变到横屏时会触发 onConfigurationChanged 事 件 在默认情况下会重新加载画面并显示和横屏一样的画面,这样会有2个问题, * 布局问题,在竖屏 显示的布局 到横屏中由于宽和高发生了变化所有多少 都会影响到布局(除非你定制2套画面在然后加个判断在横屏时怎么显示,在竖 屏时怎么显示),当然最简单的办法就是在 项目的AndroidManifest.xml中找到 你所指定的activity 中加上 o 只竖屏显示的话(android:screenOrienta

android实现在横竖屏切换时页面信息不被重置的示例分享_Android

当屏幕转动切换的时候 Android 机制是:销毁当前屏幕的 Activity ,然后重新开启一个新的适应屏幕改变的 Activity .那么,我们该如何在屏幕切换的时候页面信息不被重置呢? 解决实现:1.在 AnroidMainifest.xml 的 activity 元素中加入: 复制代码 代码如下: android:configChanges="orientation|keyboardHidden" 或 复制代码 代码如下: android:configChanges="

关于Android横竖屏切换及Activity重启周期的总结

禁止Android横竖屏和解决切换屏幕时重启Activity的方法 1.在AndroidManifest.xml的Activity配置中加入 android:screenOrientation="landscape"属性(landscape是横向,portrait是纵向).如: <activity android:name=".ContactsManagerActivity" android:label="@string/app_name"

Android开发 简单实用的禁用横竖屏切换实现

一般情况下APP的界面都是为竖屏设计的,一旦自动切换到横屏,界面可能就无法直视了.而且每次屏幕方向切换,当前的页面都会销毁并重新创建. 下面先做一个简单的演示 布局文件:     android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >      Â

iOS开发之判断横竖屏切换

/**  *  当屏幕即将旋转的时候调用  *  *  @param toInterfaceOrientation 旋转完毕后的最终方向  *  @param duration  旋转动画所花费的时间  */ - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {     if (UIInterfaceOr

Android 的apk重新打包签名后,安装成功后,手机中转屏(横竖屏切换)软件强行自动关闭了

问题描述 Android 的apk重新打包签名后,安装成功后,手机中转屏(横竖屏切换)软件强行自动关闭了 Android 的apk重新打包.签名后,安装成功后,手机中转屏(横竖屏切换)软件强行自动关闭了什么情况,我用apktool打包签名的. 解决方案 最好是接上调试,看看出错时的 logcat 的输出.如果是所有手机都出错,还比较好解决的,就怕重现不了. 解决方案二: 这种情况应该是不支持或不兼容. 解决方案三: activity在转屏的时候会执行onResume(),你可能是有一些变量在转屏