android横竖屏切换不重启activity解决方案

 更新时间:2012年11月28日 14:18:00   作者:  
部分网友会发现Activity在切换到后台或布局从横屏LANDSCAPE切换到PORTRAIT,会重新切换Activity会触发一次onCreate方法,使用其他的方法同样可以实现
部分网友会发现Activity在切换到后台或布局从横屏LANDSCAPE切换到PORTRAIT,会重新切换Activity会触发一次onCreate方法,我们可以在androidmanifest.xml中的activit元素加入这个属性Android:configChanges="orientation|keyboardHidden" 即可,比如
<activity android:name=".android123" android:configChanges="orientation|keyboardHidden" android:label="@string/app_name">
Java代码
复制代码 代码如下:

/* 声明Display对象,以取得屏幕宽高 */
final Display defaultDisplay = getWindow().getWindowManager()
.getDefaultDisplay();

intScreenH = defaultDisplay.getHeight();
intScreenW = defaultDisplay.getWidth();

/* 如果为Landscape */
if (intScreenW > intScreenH)
{
/* Landscape => Portrait */
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
} else
{
/* Portrait => Landscape */
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
/* 声明Display对象,以取得屏幕宽高 */
final Display defaultDisplay = getWindow().getWindowManager()
.getDefaultDisplay();
intScreenH = defaultDisplay.getHeight();
intScreenW = defaultDisplay.getWidth();
/* 如果为Landscape */
if (intScreenW > intScreenH)
{
/* Landscape => Portrait */
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
} else
{
/* Portrait => Landscape */
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}

同时在Activity的Java文件中重载onConfigurationChanged(Configuration newConfig)这个方法,这样就不会在布局切换或窗口切换时重载onCreate等方法。代码如下:
Java代码
复制代码 代码如下:

@Override
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE)
{
//land
}
else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)
{
//port
}
}
@Override
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE)
{
//land
}
else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)
{
//port
}
}

相关文章

  • Flutter实现心动的动画特效

    Flutter实现心动的动画特效

    为了追求更好的用户体验,有时候我们需要一个类似心跳一样跳动着的控件来吸引用户的注意力。本文将利用Flutter实现这一动画特效,需要的可以参考一下
    2022-04-04
  • Flutter开发之Widget自定义总结

    Flutter开发之Widget自定义总结

    这篇文章主要给大家介绍了关于Flutter开发中Widget自定义的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Flutter具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04
  • Android开发Jetpack组件Room使用讲解

    Android开发Jetpack组件Room使用讲解

    Room是一个数据库访问组件; 对SqLite数据库做了友好的封装,使我们在编码的时候,只需要注重逻辑的部分即可,数据库就交给Room去流畅的访问即可
    2022-08-08
  • Android中Xposed框架篇---修改系统位置信息实现自身隐藏功能实例

    Android中Xposed框架篇---修改系统位置信息实现自身隐藏功能实例

    本篇文章介绍了Android中Xposed框架的使用,详细的介绍了修改系统位置信息实现自身隐藏功能实例,有需要的朋友可以了解一下。
    2016-11-11
  • android byte[] 和short[]转换的方法代码

    android byte[] 和short[]转换的方法代码

    这篇文章主要介绍了android byte[] 和short[]转换的方法代码,有需要的朋友可以参考一下
    2014-01-01
  • Android开发中R.java文件丢失或无法更新的解决方法

    Android开发中R.java文件丢失或无法更新的解决方法

    这篇文章主要介绍了Android开发中R.java文件丢失或无法更新的解决方法,较为详细的列举分析了出现R.java文件丢失或无法更新的常见原因及相应的解决方法,需要的朋友可以参考下
    2016-02-02
  • Android自定义实现BaseAdapter的优化布局

    Android自定义实现BaseAdapter的优化布局

    这篇文章主要为大家详细介绍了Android自定义实现BaseAdapter的优化布局,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • Android中使用Kotlin实现一个简单的登录界面

    Android中使用Kotlin实现一个简单的登录界面

    Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的Swift,由 JetBrains 设计开发并开源。接下来本文通过实例代码给大家讲解Android中使用Kotlin实现一个简单的登录界面,一起看看吧
    2017-09-09
  • 基于Android的服务器端程序实例

    基于Android的服务器端程序实例

    这篇文章主要介绍了基于Android的服务器端程序实例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • Android开发中的文件操作工具类FileUtil完整实例

    Android开发中的文件操作工具类FileUtil完整实例

    这篇文章主要介绍了Android开发中的文件操作工具类FileUtil,结合完整实例形式分析了Android文件操作的常用技巧,包括文件的获取、遍历、搜索、复制、删除、判断等功能,需要的朋友可以参考下
    2017-11-11

最新评论