android如何在代码中判断横竖屏

作者&投稿:舒芸 (若有异议请与网页底部的电邮联系)
android如何判断当前是横屏还是竖屏~

方法一:
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int width = dm.widthPixels;
int height = dm.heightPixels;

判断宽高那个大
方法二:
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)
{ // 竖屏
// doSomrthing
} else
{
// 横屏时dosomething
}

?设置:

判断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 的onCreate 怎么会重新加载呢

原因是: 由于屏幕的旋转会造出 当然的activity 元素关闭 从而造出activity重新加载 ,显然这有时候并不是我们要的效果 , 那我们 在看看 如果解决这个问题吧
我们在androidManifest.xml 文件中 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中判断横竖屏是通过Configuration 这个类来判断的。

  1. Configuration.ORIENTATION_LANDSCAPE 表示横屏。

  2. Configuration.ORIENTATION_PORTRAIT表示竖屏。


以下是完整代码:

public boolean isScreenChange() {

Configuration mConfiguration = context.getResources().getConfiguration(); //获取设置的配置信息
int ori = mConfiguration.orientation ; //获取屏幕方向
if(ori == Configuration.ORIENTATION_LANDSCAPE){
//横屏
return true;
}else if(ori == Configuration.ORIENTATION_PORTRAIT){
//竖屏
return false;
}
return false;
}


避免在转屏时重启Activity

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



@Override
public void onConfigurationChanged(Configuration newConfig) {
// TODO Auto-generated method stub
if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE){
//横屏
}else if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
//竖屏
}
super.onConfigurationChanged(newConfig);
}


如何在Android手机上开发出Android应用
如何单纯在一台Android手机上,开发出一款Android应用。甚至是跨平台在一台Android手机上开发出iOS应用。这看上去似乎是个不可能完成的任务,但国内首个HTML5在线的移动应用跨平台开发网站,让这个梦想成为可能。AppCan是国内首个HTML5移动应用在线开发平台,广大开发者可以在AppCan平台上简单、快速、高效的...

如何在Android开发中熟练使用五种Toast的特效
import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.view.Gravity;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.view.View.OnClickListener;import android.widget.ImageView;import android.widget....

如何在Android下使用JNI
我们知道,Android系统的底层库由c\/c++编写,上层Android应用程序通过Java虚拟机调用底层接口,衔接底层c\/c++库与Java应用程序间的接口正是JNI(JavaNative Interface)。本文描述了如何在ubuntu下配置AndroidJNI的开发环境,以及如何编写一个简单的c函数库和JNI接口,并通过编写Java程序调用这些接口,最终运行在模拟器上的过程。

如何在Android中使用汇编语言
我们下面将讲述一下如何使用ARM代码并使用NEON指令集。首先,在你的Android.mk中修改LOCAL_SRC_FILES,要将源文件名后面添加.neon后缀,比如LOCAL_SRC_FILES := hello-jni.c改成LOCAL_SRC_FILES := hello-jni.c.neon。这里要注意的是你真正的源文件名不要修改,就修改LOCAL_SRC_FILES这个符号的值...

如何:在Android应用中加入广告方法步骤
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" \/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" \/> <uses-permission android:name="android.permission.GET_TASKS" \/> 在Application项加入: <activity android:name="com.waps.OffersWebView"and...

如何在Android Studio中添加RecyclerView-v7支持包
5、打开上面目录后,发现里面有appcompat-v7,而且里面最新版本就是23.2.1 6、按照第2步的思路,试试直接编译进来是否OK。按照目录结构,在app的build.gradle的dependencies最后添加了一句: compile ‘com.android.support:recyclerview-v7:23.2.1’7、Build——Clean Project。等待Clean完毕后,在...

如何在Android上编写高效的Java代码
SE语言结构以及它们是如何在Android上运行的。其次,我会介绍如何优化Android中的Java代码,如何优化内存分配,以及如何恰当地处理多线程。比较Android上的Dalvik Java和Java SE虽然远在Android出现之前,开发者就能用Java编程语言为移动设备编写应用程序,但它只是Java中功能极为有限的一个版本,称为Java ME(微型版)。不同的...

android 如何在程序中设置webview大小?
android 如程序设置webview大小的方法为:1、android自带的五种字体大小:SMALLEST(50%),SMALLER(75%),NORMAL(100%),LARGER(150%),LARGEST(200%);代码:webSettings.setTextSize(TextSize.LARGER);2、android3。0以下的系统可以用下面的代码 :public static void setScaleVsalue(View view, double ...

android中如何在xml文件中增加属性
好的设置方式往往是数据驱动的,通过数据控制代码的运行,便于代码的维护和修改。在android中增中自定义的xml属性, 可以把数据存储在xml文件中,然后在代码中取出这些属性的值。分为以下几步:1. 在attrs.xml文件中定义属性的类型,即字符串还是数值如下:2.在xml 文件中指定譔属性的值。如下:android:...

如何在Android中调用浏览器打开网页
在Android中可以调用自带的浏览器,或者指定一个浏览器来打开一个链接。只需要传入一个uri,可以是链接地址。启动android默认浏览器 在Android程序中我们可以通过发送隐式Intent来启动系统默认的浏览器。如果手机本身安装了多个浏览器而又没有设置默认浏览器的话,系统将让用户选择使用哪个浏览器来打开连接。使...

定结县18413996391: android如何在代码中判断横竖屏 -
黎仪津止: Android中判断横竖屏是通过Configuration 这个类来判断的. 1. Configuration.ORIENTATION_LANDSCAPE 表示横屏. 2. Configuration.ORIENTATION_PORTRAIT表示竖屏. 以下是完整代码: public boolean isScreenChange() {...

定结县18413996391: android 怎么判断是横竖屏 -
黎仪津止: 确定你的设备有重力感应功能,如果没有的话只能用软件手动调整横竖屏显示.重力感应需要硬件支持的,设备必须内置重力感应模块(芯片). 设置-声音和显示-在“方向”一项打钩.一般主屏幕是不支持重力感应的,软件的话基本上都支持.随便打开个浏览器,把机器一转,OK.

定结县18413996391: android 强制设置横屏 判断是横屏还是竖屏 -
黎仪津止: 判断activity 是横屏还是竖屏 方法 1: //根据设备配置信息 Configuration cf= this.getResources().getConfiguration(); //获取设置的配置信息 int ori = cf.orientation ; //获取屏幕方向 if(ori == cf.ORIENTATION_LANDSCAPE){ //横屏 }else if(ori == ...

定结县18413996391: android studio手机竖屏怎么换横屏 -
黎仪津止: 如果要让软件在横竖屏之间切换,由于横竖屏的高宽会发生转换,有可能会要求不同的布局.可以通过以下两种方法来切换布局: 1)在res目录下建立layout-land和layout-port目录,相应的layout文件名不变,比如main.xml.layout-land是横屏的...

定结县18413996391: 如何让安卓手机判定屏幕旋转90度 how to make android mobile phone to determine -
黎仪津止: 在介绍之前,我们需要先了解默认情况下android屏幕旋转的机制:默认情况下,当用户手机的重力感应器打开后,旋转屏幕方向,会导致当前activity发生onDestroy-> onCreate,这样会重新构造当前activity和界面布局,如果在Camera界面,则...

定结县18413996391: Android studio怎么设置代码横向选择和竖向选择 -
黎仪津止: 1、在Android studio进行选择进行选择的代码的文件,并进行打开.2、在编辑器的代码中选择列的的内容之后,可是在选择列的内容时候,会把行的内容全部选中.3、在进行点击Android studio菜单中的“edit”的选项菜单中.4、进行点击完edit的选项菜单中之后,就会弹出了一个下拉菜单中进行选择“column selection mode”的选项.5、这样的话,就可以在Android studio的底部的位置,可以看到的是已经变为了column的模式.6、在次在列表中选择列表中内容,可以看到了行的内容没有全部选择进入,说明选择纵向模式设置成功.

定结县18413996391: Android项目中能否判断手机屏幕是 朝上 还是 朝下 -
黎仪津止: // 获取手机横竖屏的方法 public boolean isScreenChange() { Configuration mConfiguration = this.getResources().getConfiguration(); // 获取设置的配置信息 int ori = mConfiguration.orientation; // 获取屏幕方向 if (ori == Configuration....

定结县18413996391: android横竖屏切换 怎么触发 -
黎仪津止: getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);//设置成全屏模式setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE););//强制为横屏setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//竖屏

定结县18413996391: 怎么用Android代码锁定整个app竖屏 -
黎仪津止: 清单注册文件:android:screenOrientation=""<activity android:name="..." android:screenOrientation="...">

定结县18413996391: android编译的时候 是如何配置默认显示横竖屏 -
黎仪津止: 五、 修改开机竖屏显示 这里要修改源代码并重新编译才能实现 frameworks/base/core/res/res/values/config.xml 修改前:<integer name="config_lidOpenRotation">90</integer> 修改后:<integer name="config_lidOpenRotation">0</integer>...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网