判断activity 是横屏还是竖屏 

方法 1: //根据设备配置信息

Configuration cf= this.getResources().getConfiguration(); //获取设置的配置信息

int ori = cf.orientation ; //获取屏幕方向

if(ori == cf.ORIENTATION_LANDSCAPE){

  //横屏

}else if(ori == cf.ORIENTATION_PORTRAIT){

 //竖屏

}

 

方法2: 通过设备分辨率还判断

 

DisplayMetrics dm = new DisplayMetrics();

mLauncher.getWindowManager().getDefaultDisplay().getMetrics(dm);

mWidth = dm.widthPixels;

mHeight = dm.heightPixels;

if (mHeight > mWidth){//layout port

// 竖屏 .......

}else{//layout land

// 横屏 .......

}

 

 

 

设置程序 横屏还是竖屏 有两种方法 1:通过配置实习  2: 代码实现

方法2://重写activity onResume方法

@Override protected void onResume() {

/** * 设置为横屏 */

if(getRequestedOrientation()!=ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE){ setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

//ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE :横

//SCREEN_ORIENTATION_PORTRAIT:竖

}

super.onResume();

}

 方法2: 配置androidManifest.xml实现 

在activity 中加入 android:screenOrientation="landscape" 信息即可 该属性有两个值 portrait//竖  landscape//横

 

<activity android:name="MainActivity" android:label="@string/app_name" android:screenOrientation="landscape">

   </activity>

 

 搞定  快去试试 吧   不过细心的朋友 会发现 咦 当我屏幕的方向 发生变化的时候为啥 activity 的onCreate 怎么会重新加载呢

 

原因是: 由于屏幕的旋转会造出 当然的activity 元素关闭 从而造出activity重新加载 ,显然这有时候并不是我们要的效果 , 那我们 在看看 如果解决这个问题吧

我们在androidManifest.xml 文件中 activity 节点加入红色的 属性

<activity android:name="MainActivity" android:label="@string/app_name" android:screenOrientation="landscape"  android:configChanges="orientation|keyboardHidden">

   </activity>

 

1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次

 

2、设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次

 

3、设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法

 

同时在Activity的Java文件中重载onConfigurationChanged(Configuration newConfig)这个方法,这样就不会在布局切换或窗口切换时重载等方法。代码如下:

 @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
     }
    }

 

//------------------------------------------------------

 

关于Android中Activity的横竖屏切换问题可以通过AndroidManifest.xml文件中的Activity来配置:

android:screenOrientation=["unspecified" | "user" | "behind" |
"landscape" | "portrait" |
"sensor" | "nonsensor"]

screenOrientation 用来指定Activity的在设备上显示的方向,每个值代表如下含义:

"unspecified" 默认值 由系统来判断显示方向.判定的策略是和设备相关的,所以不同的设备会有不同的显示方向.
"landscape" 横屏显示(宽比高要长)
"portrait" 竖屏显示(高比宽要长)
"user" 用户当前首选的方向
"behind" 和该Activity下面的那个Activity的方向一致(在Activity堆栈中的)
"sensor" 有物理的感应器来决定。如果用户旋转设备这屏幕会横竖屏切换。
"nosensor" 忽略物理感应器,这样就不会随着用户旋转设备而更改了 ( "unspecified"设置除外 )。

android 强制设置横屏 判断是横屏还是竖屏的更多相关文章

  1. app让个别界面横屏,其他的为竖屏,解决如下

    app让个别界面横屏,其他的为竖屏,解决如下 APP设置里面,一定要设置可以旋转的方向 appdelegate里面重新系统方向代理 func application(application: UIAp ...

  2. Android强制设置横屏或竖屏

    全屏 在Activity的onCreate方法中的setContentView(myview)调用之前添加下面代码 requestWindowFeature(Window.FEATURE_NO_TIT ...

  3. 05 Android强制设置横屏或竖屏/全屏

    全屏 在Activity的onCreate方法中的setContentView(myview)调用之前添加下面代码 requestWindowFeature(Window.FEATURE_NO_TIT ...

  4. (转)Android强制设置横屏或竖屏

    全屏 在Activity的onCreate方法中的setContentView(myview)调用之前添加下面代码 requestWindowFeature(Window.FEATURE_NO_TIT ...

  5. Android 强制设置横屏或竖屏 设置全屏

    (转自:http://blog.csdn.net/yuejingjiahong/article/details/6636981) 强制横屏: @Override protected void onRe ...

  6. android 二维码 扫描,生成,竖屏

    最近公司有用到二维码,生成,扫描,所以学习了一下,和大家分享: demo 见下面链接,已经改成竖屏: http://download.csdn.net/detail/q610098308/868101 ...

  7. Android和iOS中Cocos2dx的横屏竖屏设置

    一.横屏.竖屏设置 1.android AndroidManifest.xml文件中, screenOrientation="landscape" 为横屏, screenOrien ...

  8. 转载:Android横屏竖屏切换的问题

    一.禁止横竖屏转换 Android横竖屏切换在手机开发中比较常见,很多软件在开发过程中为了避免横竖屏切换时引发不必要的麻烦,通常禁止掉横竖屏的切换, 通过在AndroidManifest.xml中设置 ...

  9. iOS强制切换横屏、竖屏

    切换横竖屏最直接的方式是调用device的setOrientation方法.但是从sdk3.0以后,这个方法转为似有API,如果要上AppStore的话,要慎用! if ([[UIDevice cur ...

随机推荐

  1. Mono For Android中AlarmManager的使用

    最近做了一个应用,要求如下: 程序运行之后的一段时间,分别触发3个不同的事件.当然很快就想到了Android中的AlarmManager和BroadcastReceiver.但是毕竟Mono环境和Ja ...

  2. jquery上传图片

    http://www.cnblogs.com/wutao/archive/2010/01/28/1658496.html http://www.cnblogs.com/cloudgamer/archi ...

  3. Sass使用教程

    sass官网: http://sass-lang.com/ http://sass-lang.com/documentation/file.SASS_REFERENCE.html Sass和Scss的 ...

  4. docker 在esx上的网络配置

  5. C语言对象化编程

    以下为一个引子: C中struct的函数实现,只能用函数指针成员. C结构体内不能有函数的代码,但可以有函数的指针. C/C code Code highlighting produced by Ac ...

  6. linux 学习之七-部分ssh命令

    ssh命令 /etc/init.d/sshd restart|start|stop   重启|开始|关闭SSH的服务 ssh IP地址 连接SSH Linux scp命令用于Linux之间复制文件和目 ...

  7. 使用ionic与cordova(phonegap)进行轻量级app开发前的环境配置与打包安卓apk过程记录

     前言 有人说:"如果你恨一个人,就让ta去接触cordova(phonegap)",这是因为这里面的水很深,坑很多,真让人不是一般地发狂.或许有幸运的人儿基本顺顺利利就配置完环境 ...

  8. 用SQL脚本移除视图中存在的机器名

    用SQL脚本移除视图中存在的机器名 例子: msccdr.cdr.DimRMAReturnMethod CREATE VIEW CDR.DimRMAReturnMethod ( ReturnMetho ...

  9. [iOS]手把手教你实现微信小视频

    本文个人原创,转载请注明出处,谢谢. 前段时间项目要求需要在聊天模块中加入类似微信的小视频功能,这边博客主要是为了总结遇到的问题和解决方法,希望能够对有同样需求的朋友有所帮助. 效果预览: 这里先罗列 ...

  10. 《C++ Primer Plus 6th》读书笔记 - 第8章 函数探幽

    1. 摘录 默认参数指的是当函数调用中省略了实参时自动使用的一个值. 默认参数并非编程方面的重大突破,而只是提供了一种便捷的方式.使用默认参数,可以减少要定义的析构函数.方法以及方法重载的数量. 试图 ...