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


    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);   
     } 

     

  • 相关阅读:
    Java中final、finally、finalize的区别
    GC垃圾回收机制详解
    spring ioc Di
    获取不同语言版本的任务状态
    转:系统架构师-基础到企业应用架构
    转:SharePoint【Site Definition 系列】
    转:SharePoint【ECMAScript对象模型系列】
    转:SharePoint【Ribbon系列】
    SharaPoint Farm Administrator密码变换及管理员转换
    转:Programming with Features(操作Feature)
  • 原文地址:https://www.cnblogs.com/zmc/p/3638256.html
Copyright © 2020-2023  润新知