【转】如何在 Android 程序中禁止屏幕旋转和重启Activity

原文网址:http://www.cnblogs.com/bluestorm/p/3665890.html

禁止屏幕随手机旋转变化

有时候我们希望让一个程序的界面始终保持在一个方向,不随手机方向旋转而变化:
在AndroidManifest.xml的每一个需要禁止转向的Activity配置中加入android:screenOrientation=”landscape” 属性。

landscape = 横向
portrait = 纵向

避免在转屏时重启Activity

android中每次屏幕方向切换时都会重启Activity,所以应该在Activity销毁前保存当前活动的状态,在Activity再次 Create的时候载入配置,那样,进行中的游戏就不会自动重启了!
要避免在转屏时重启Activity,可以通过在AndroidManifest.xml文件中重新定义方向(给每个Activity加上 android:configChanges=”keyboardHidden|orientation”属性)。
在需要控制屏幕显示方向的Activity中重写 onConfigurationChanged(Configuration newConfig)方法,这样在转屏时就不会重启Activity了。

if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE) {
    //横向
    setContentView(R.layout.file_list_landscape);
} else {
    //竖向
    setContentView(R.layout.file_list);
}

<activity android:name="com.myapp.MyActivity"
          android:label="@string/app_name"
          android:screenOrientation="landscape"
          android:configChanges="orientation"
          >
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

android:screenOrientation=”landscape”
android:configChanges=”keyboardHidden|orientation”

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);

    if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE) {
        //横向
        setContentView(R.layout.file_list_landscape);
    } else {
        //竖向
        setContentView(R.layout.file_list);
    }
}

在模拟器中可以按 CTL+F11 模拟做屏幕旋转。

参考:

How to disable Screen Auto-Rotation on Android
http://digitaldumptruck.jotabout.com/?p=897

如何在 Android 程序中禁止屏幕旋转和重启Activity
http://www.androidcn.com/news/20110302/00001299.html

时间: 2024-12-28 11:55:38

【转】如何在 Android 程序中禁止屏幕旋转和重启Activity的相关文章

android 程序中禁止屏幕旋转和重启Activity

禁止屏幕随手机旋转变化 有时候我们希望让一个程序的界面始终保持在一个方向,不随手机方向旋转而变化: 在AndroidManifest.xml的每一个需要禁止转向的Activity配置中加入android:screenOrientation="landscape" 属性. landscape = 横向 portrait = 纵向 避免在转屏时重启Activity android中每次屏幕方向切换时都会重启Activity,所以应该在Activity销毁前保存当前活动的状态,在Activi

如何在android程序中使用百度api接口:

百度地图.百度语音.百度导航.百度定位等等.以下为使用百度天气提供的api,具有天气查询,城市设置,短信分享天气等基本功能,界面清爽,不过现在因为百度key的原因失效了,不能更新天气了.srceduswustiweatherwebUpdateWeather.java中的AK替换成自己申请的百度API KEY,申请地址http://lbsyun.baidu.com/apiconsole/key.代码有比较详细的注释.代码量也不大,有兴趣的朋友可以自己排查一下.项目编码UTF-8 默认编译版本4.2

Android 设定横屏,禁止屏幕旋转,Activity重置 [更新视频播放器相关]

1. 设定屏幕方向 当指定了屏幕的方向后(非SCREEN_ORIENTATION_UNSPECIFIED),屏幕就不会自己主动的旋转了 有2中方式控制屏幕方向: 1.1 改动AndroidManifest.xml 在AndroidManifest.xml的activity中增加: 横屏: android:screenOrientation="landscape" 竖屏: android:screenOrientation="portrait" 1.2 setRequ

Android 设定横屏,禁止屏幕旋转,Activity重置

1. 设定屏幕方向 当指定了屏幕的方向后(非SCREEN_ORIENTATION_UNSPECIFIED),屏幕就不会自动的旋转了 有2中方式控制屏幕方向: 1.1 修改AndroidManifest.xml 在AndroidManifest.xml的activity中加入: 横屏: android:screenOrientation="landscape" 竖屏: android:screenOrientation="portrait" 1.2 setReques

Qt for Android 程序禁止屏幕旋转

有时候我们希望让一个程序的界面始终保持在一个方向,不随手机(平板)方向旋转而变化:在AndroidManifest.xml的每一个需要禁止转向的Activity配置中加入 android:screenOrientation=”landscape” 属性. landscape = 横向 portrait = 纵向 原创文章,转载请注明: 转载自 http://www.mr-wu.cn/ 吴川斌的博客 本文链接地址: Qt for Android 程序禁止屏幕旋转 http://www.mr-wu.

如何在Android开发中让你的代码更有效率

如何在Android开发中让你的代码更有效率 最近看了一个视频,名字叫做Doing More With Less: Being a Good Android Citizen,主要是讲如何用少少的几句代码来改善Android App的性能.在这个视频里面,演讲者以一个图片app为例讲解如何应用Android中现有的东西来改善app性能问题. 这个图片app的代码:https://github.com/penkzhou/iogallery.ppt:http://greenrobot.qiniudn.

在Android程序中使用已有的SQLite数据库

已经将这篇文章迁移至 Code问答,你也能够到这里查看这篇文章,请多多关注我的新技术博客CodeWenDa.com 在中文搜索中,没有找到一篇比較好的关于怎样在Android应用中使用自己事先创建好的数据库的文章,于是在谷歌上找到这篇英文文章,依照它的步骤,測试成功.决定把这篇文章大致的翻译一下,想看原文的能够点击这里:http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/ .

如何在c程序中动态使用数组

C语言不允许对数组的大小作动态定义,不能在程序中临时输入数组大小,这就给编程带来一定的困难. 下面通过一个求平均数和标准差的小程序来展示如何在程序中动态定义数组大小: 1 /*如何在c程序中动态使用数组(calloc函数)*/ 2 #include <stdio.h> 3 #include <stdlib.h> 4 #include <math.h> 5 int main(){ 6 int num; //数据个数 7 double sum,ave,s2; //数据和.平

在android程序中调用shell命令与脚本

最近做android的一个功能就是调用shell命令来进行一些系统级别的操作,比如说是关机开机之类的,现在总结一下具体的用法以及遇到的坑(基于我所用到的,没用到的我就不说了) (1) Runtime.getRuntime().exec("ls"); 这是最简单的一种,你输入后就能就会执行ls命令,如果要获得输出的话可以这样写 Process p = Runtime.getRuntime().exec("ls"); String data = null; Buffer