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

2016-02-19 11:32 39 1 收藏

下面图老师小编要跟大家分享android横竖屏切换不重启activity解决方案,简单的过程中其实暗藏玄机,还是要细心学习,喜欢还请记得收藏哦!

【 tulaoshi.com - 编程语言 】

部分网友会发现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
}
}

来源:https://www.tulaoshi.com/n/20160219/1597827.html

延伸阅读
最近做局域网socket连接问题,要在多个activity之间公用一个socket连接,就在网上搜了下资料,感觉还是application方法好用,帖出来分享下! Android中在不同Activity中传递变量,通常使用Intent中Bundle添加变量的操作方法。 保存参数时: 代码如下: Intent intent = new Intent(); intent.setClass(A.this, B.class); Bundle bundle =...
对于交互设计而言,移动手机客户端的横竖屏切换时,怎么切换就成了 一个普遍存在的问题。 课程内容 随着技术与用户体验的发展,移动客户端产品中越来越多的需要横竖屏切换的设计。横竖屏旋转切换的设计在理想的情况下保持不变就能满足用户的需求。但也有很多时候,横竖屏切换时用户操作行为和屏幕比例的改变决定了客户端产品在设计时必须做出...
Vista升级win7系统出现无限重启的解决方案   用户想要从Vista升级到Windows7时,安装程序可能会提示如下错误: This version of Windows could not be installed, Your previous version of Windows has been restored, and you can continue to use it." 解决方法: 1、首先放入Windows Vista安装光盘,然...
目前移动设备中的都会内置加速计,这个装置使得移动设备可以根据摆放的方向进行屏幕的横竖屏切换,令移动应用有了更多展现的功能和使用的方式。 本文中列举了一些对横竖屏设计中可能遇见的设计难点及解决的方案、 眼下,智能移动设备内置的加速计的主要作用,就是根据设备的定向方式来决定屏幕的显示模式,也就是在横屏或竖屏模式之间进行切...
随着计算机网络的普及,计算机病毒有了快速传播的机会,并且对数据文件的破坏日益严重,用户需要经常对个人重要数据做异地备份。基于多用户和数据隐私的考虑,提出了个人数据备份系统解决方案。它利用网络存储设备具有的大容量、高可靠性、高安全性特点,为用户提供一定容量的空间来保存个人数据,同时利用软件的权限管理很好地实现个人数...

经验教程

833

收藏

86
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部