Android 禁止屏幕旋转 & 旋转屏幕时保持Activity内容

 
1.在应用中固定屏幕方向。
 
     在AndroidManifest.xml的activity中加入:
           android:screenOrientation=”landscape”
     属性即可(landscape是横向,portrait是纵向)。
 
OK
 
 

2.随屏幕旋转时,不重新调用onCreate。

 

当将手机屏幕旋转时,系统会被强制重置启动onCreate方法。

 
1)修改AndroidManifest.xml
 
     在activity属性中加入:
          android:configChanges=”orientation|keyboardHidden”
  • android:configChanges,这个方法主要是负责列出清单,当清单上用户指定的设置改变时,Activity会自己处理这些变化。
  • orientation,屏幕界面旋转(可能是用户手动旋转的),【注意:如果你的开发API等级等于或高于13,你还需要设置screenSize,因为screenSize会在屏幕旋转时改变】
  • keyboardHidden,键盘辅助功能改变
2)在相对应的Activity中继承重写onConfigurationChanged方法,这个方法将会在我们的应用发生变化时,让我们能随心所谓地进行监听处理。
public void onConfigurationChanged(Configuration newConfig) {
// TODO Auto-generated method stub
super.onConfigurationChanged(newConfig);
if (newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE) {
// Nothing need to be done here } else {
// Nothing need to be done here
} }
还有界面设计方面的问题,Android手机大部分是HVGA、WVGA的分辨率,屏幕视觉上比较“狭长”。往往竖着看很合适的布局,当屏幕横向翻转以后 显示会变得很别扭。当屏幕由竖直方向改变为横向时,我们可以把界面中的控件由本来的垂直线性布局修改为横向线性布局,这样布局会更合理一些。我们可以自己 写一个布局类集成LinearLayout布局,通过覆盖onMeasure方法来实现这种自动布局。当屏幕的宽高发生改变时,系统会调用 onMeasure方法。通过这个方法,我们可以获得改变以后的宽高尺寸,从而来实现屏幕翻转的自动布局,主要代码如下:

Java代码 
 /**  
  * 屏幕改变时自动调用  
* @param widthMeasureSpec 改变后的宽度  
* @param heightMeasureSpec 改变后的高度  
*/  
 protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)   
 {   
     /*宽度*/  
     int screenWith = View.MeasureSpec.getSize(widthMeasureSpec);   
     /*高度*/  
     int screenHeight = View.MeasureSpec.getSize(heightMeasureSpec);   
        
     /*竖直布局*/  
     if (screenWith < screenHeight)   
     {   
            
         this.setOrientation(VERTICAL);   
         for (int i = 0; i < getChildCount(); i++)   
         {   
             View childView = getChildAt(i);   
             if (childView instanceof CakyCanvas)   
             {   
                 /*该控件占布局的2/5*/  
                 LayoutParams params = new LayoutParams(screenWith,   
                         screenHeight * 2/ 5  
                 updateViewLayout(childView, params);   
             }   
             else if (childView instanceof CakyExplainCanvas)   
             {   
                 /*该控件占布局的3/5*/  
                 LayoutParams params = new LayoutParams(screenWith,   
                         screenHeight * 3/ 5  
                 updateViewLayout(childView, params);   
             }   
         }   
     }   
     /*横向布局*/  
     else  
     {   
            
         this.setOrientation(HORIZONTAL);   
         for (int i = 0; i < getChildCount(); i++)   
         {   
             View childView = getChildAt(i);   
             if (childView instanceof CakyCanvas)   
             {   
                 LayoutParams params = new LayoutParams(   
                         screenWith * 2/ 5  
                         screenHeight);   
                 updateViewLayout(childView, params);   
             }   
             else if (childView instanceof CakyExplainCanvas)   
             {   
                 LayoutParams params = new LayoutParams(   
                         screenWith * 3/ 5  
                         screenHeight);   
                 updateViewLayout(childView, params);   
             }   
         }   
     }   
     super.onMeasure(widthMeasureSpec, heightMeasureSpec);   
 }

Android 禁止屏幕旋转 & 旋转屏幕时保持Activity内容的更多相关文章

  1. Android禁止程序自动旋转的配置

    在想要禁止的Activity中加入 android:screenOrientation="portrait" 属性,其中,portrait是竖屏,landscape是横屏

  2. Android 禁止屏幕旋转、避免转屏时重启Activity

    一.禁止屏幕旋转 在AndroidManifest.xml的每一个需要禁止转向的Activity配置中加入android:screenOrientation属性: 可选项: landscape = 横 ...

  3. Android 解决setRequestedOrientation之后手机屏幕的旋转不触发onConfigurationChanged方法

    最近在做播放器的时候遇到一个问题,在屏幕方向改变之后需要切换播放器全屏/非全屏的时候,在重写了onConfigurationChanged方法并在manifest.xml配置文件中添加 android ...

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

    package com.gwtsz.gts2.util; import android.content.Context; import android.provider.Settings; impor ...

  5. 【转】Unity3D研究院之设置自动旋转屏幕默认旋转方向

    http://www.xuanyusong.com/archives/2871 如下图所示,在处理屏幕默认旋转方向的时候可以在这里进行选择,上下左右一共是4个方向. 策划的需求是游戏采用横屏,但是要求 ...

  6. uwp - 禁用屏幕翻转/禁用屏幕旋转/禁用横屏模式

    原文:uwp - 禁用屏幕翻转/禁用屏幕旋转/禁用横屏模式 解决方案目录 > Package.appxmanifest 双击打开,把支持的旋转:纵向勾上,只勾这一个其他不勾,就可以了.同理,想让 ...

  7. Unity3D研究院之设置自动旋转屏幕默认旋转方向

    如下图所示,在处理屏幕默认旋转方向的时候可以在这里进行选择,上下左右一共是4个方向. 策划的需求是游戏采用横屏,但是要求支持两个方向自动旋转,如下图所示,我的设置是这样的. Default Orien ...

  8. 【iOS】屏幕旋转,屏幕自适应方向变化

    1. iOS有四个方向的旋转,为了保证自己的代码能够支持旋转,我们必须首先处理一个函数: - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInter ...

  9. Android中使用ViewFlipper实现屏幕页面切换(关于坐标轴的问题已补充更改)

    屏幕切换指的是在同一个Activity内屏幕间的切换,ViewFlipper继承了Framelayout类,ViewAnimator类的作用是为FrameLayout里面的View切换提供动画效果.如 ...

随机推荐

  1. kafka搭建

    接下来一步一步搭建Kafka运行环境. Step 1: 下载Kafka 点击下载最新的版本并解压. > tar -xzf kafka_2.9.2-0.8.1.1.tgz > cd kafk ...

  2. C语言Socket编程(计算机网络作业)

    最近我计算机网络课程要做作业了,没办法跟着老师一步一步的写C语言的代码,使用的计算就是Socket通信发送消息:代码实现的功能很简单,客户端向服务器端发送消息,服务器端接收客户端发来的消息,并且输出显 ...

  3. Hive之 hive与hadoop的联系

    Hive与Hadoop调用图 解析: 1.提交sql 交给驱动2.驱动编译:解析相关的字段表信息3.去metastore查询相关的信息 返回字段表信息4.编译返回信息 发给驱动5.驱动发送一个执行计划 ...

  4. SouthidcEditor编辑器如何支持上传png图片

    SouthidcEditor编辑器如何支持上传png图片? asp网站一般都是用的南方数据SouthidcEditor编辑器,可是这个编辑器上传图片功能不能上传png类型的图片,那怎么办?我(红蜘蛛网 ...

  5. [转]Java IDE 之 IntelliJ IDEA 2017

    参考链接1:http://blog.csdn.net/u012364631/article/details/47682011 IDEA Community(社区版) 使用Maven创建Web工程 并部 ...

  6. [html]CSS 小贴士

    CSS 中用四个伪类来定义链接的样式,分别是:a:link.a:visited.a:hover 和 a : active,例如: a:link{font-weight : bold ;text-dec ...

  7. 关于centos6升级python3.6无法使用pip的问题

    用find / -name "pip",也找不到类似/usr/bin/pip类似的命令,说明pip没安装好,那么运行下面的命令 yum install python-pip 然后可 ...

  8. Solr进行Distinct 获取Count

    今天碰到一个问题,数据之前入solr的时候并没有计算条数,现在需要计算出某几个表中去重后的总数. 由于solr的ISearch并没有相关的Distinct功能.想到一个解决方案是用Solr的Facet ...

  9. zabbix使用之打造邮件报警

    zabbix使用之打造邮件报警 前言: 报警信息很重要,它能使我们最快的知道故障内容,以便于及时处理问题.zabbix如果没配置报警功能,则完全不能体现zabbix的优势了 配置详情如下: 1.编写发 ...

  10. java的方法传参,最容易混淆的问题!!!

    参数传递 参数传递,可以理解当我们要调用一个方法时,我们会把指定的数值,传递给方法中的参数,这样方法中的参数就拥有了这个指定的值,可以使用该值,在方法中运算了.这种传递方式,我们称为参数传递. 在这里 ...