Android 禁止屏幕旋转 & 屏幕旋转不刷新 Activity & 动态更改屏幕方向

转载 2013年12月02日 16:10:10

转自:http://gaebolg.blog.163.com/blog/static/19826906820134312050504/

余好读书,乐思善疑,有过目不忘之能,亦有掩卷即忘之病,故常撰文以记之……

 

一、禁止屏幕旋转:

 

打开工程中的 AndroidManifest.xml 文件,在 <activity> </activity> 中,添加一条属性信息:

android:screenOrientation="portrait"  (强制竖屏)

android:screenOrientation="landscape"  (强制横屏)

 

二、屏幕旋转不刷新 Activity:

 

当屏幕旋转时,会重新执行 Activity 中的 onCreate() 方法,即刷新了 Activity 的显示。若是不想刷新,可以用第一种方法锁屏,也可以用以下方法:

 

1、打开工程中的 AndroidManifest.xml 文件,在 <activity> </activity> 中,添加一条属性信息:

android:configChanges=”orientation|keyboardHidden”

注:这个属性指的是,当后边属性值代表的事件发生时,Activity 会执行某个函数,orientation 指的是当屏幕旋转时,keyboardHidden 指的是键盘辅助功能改变。“|”为或符号,指这两个中任意一个发生,就执行 Activity 某个函数。

注2:如果你的开发 API 等级等于或高于 13,你还需要设置 screenSize,因为 screenSize 会在屏幕旋转时改变。

 

2、在对应 Activity 中重写 onConfigurationChanged() 方法:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    // TODO Auto-generated method stub
    super.onConfigurationChanged(newConfig);
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        // 什么都不用写
    }
    else {
        // 什么都不用写
    }
}

注:如果在 if、else 中,使用了 setContentView(R.layout.xxxx) 函数,那么就可以实现:每次屏幕旋转时,调用不同的布局。

 

三、动态更改屏幕方向:

 

有些时候,我们不需要把程序写死,需要在程序中有需要的时候旋转屏幕,例如:在“设置”里添加一个 ListView 项,可通过点击选择横屏或竖屏。(比如:电子书软件)

假设有一个按钮,我们仅重写 OnClick() 函数:

@Override
public void onClick(View v) {

    // 如果是竖排,则改为横排
    if (getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) {
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    }

    // 如果是横排,则改为竖排
    else if (getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) {
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    }

}

重点就是:getRequestedOrientation() 函数、setRequestedOrientation() 函数的使用。

注意:使用这种方法,必须事先在 AndroidManifest.xml 的 <activity> </activity> 中,添加android:screenOrientation 属性值,不然 getRequestedOrientation() 可能会出问题。

 

参考文档 1:http://weizhulin.blog.51cto.com/1556324/311469

参考文档 2:http://www.cnblogs.com/reaver21/archive/2012/03/20/2407711.html

举报

相关文章推荐

Android Activity屏幕旋转方向完全控制

我们知道,系统提供了android:configChanges="orientation" 清单文件属性以监听屏幕旋转,进而触发onConfigurationChanged方法。 但这有时不能完全满足...

如何framework层任意设置Android屏幕的旋转方向

设备平放,屏幕朝正上方。以下四个常量分别代表: private static final int ROTATION_0 = 0;//初始情况。这个时候设备是横屏还是竖屏与硬件设备安装时默认的显示方向...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

Android6.0 旋转屏幕(四)应用强制设置方向

有时候我们也可以强制应用横频,这又是如何做到的? 就是调用了AMS的setRequestedOrientation接口,这个接口先是调用WMS的setAppOrientation函数设置这个Acti...

Android旋转屏幕导致Activity重建

最近做一个小应用,自然想做成兼容性高点的可是布局采用Fragment。于是在应用即将完成的时候,发现了一个问题,就是屏幕旋转问题,当设备屏幕旋转,应用的Activity就会被重建。如果这会是在输入一个...

Android动态禁用或开启屏幕旋转工具

Android手机在禁用屏幕旋转的情况下,该如何在程序中动态的设置屏幕可旋转与不可旋转呢,如何判断屏幕旋转功能是否开启呢?该工具类即可满足需求。

让android程序根据重力感应旋转屏幕(支持4个方向旋转)

转自:http://blog.csdn.net/yixiaoqingyuz/article/details/6453798 最近公司在做一个软件,用户要求软件能随着手机转动自动切换横屏和竖屏,而且要...

Android 禁止屏幕旋转 screenorientation

当手机没有关闭横竖屏切换功能时,系统一旦触发横竖屏切换,缺省状态下,当前活动的App的界面就会进行横竖屏切换,由于横竖屏的界面尺寸等参数不同,很多软件在设计和开发中为了避免横竖屏切换时引发不必要的麻烦...

Android WebView在屏幕旋转后,不重新加载URL及禁止横屏的方法

最近在开发一个web app,发现横屏后,URL会重新加载,体验很不好。 需要更改AndroidManifest.xml文件,在需要禁止重新加载的Activity中增加android:configC...

长按menu按键旋转屏幕方向

有个功能,通过长按menu按键,可以旋转屏幕方向(0°或者90°),这个功能有时蛮有用的,下面来看看是如何实现的:   1 修改按键处理程序   frameworks/policies/b...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)