1. android如何判断当前是横屏还是竖屏
用这个方法getActivity().getResources().getConfiguration().orientation
1竖屏0横屏
2. android能在横屏状态显示竖屏alertdialog对话框吗
横屏状态下显示的所有东西都是横向的,不能弹出竖屏alertdialog对话框, 为什么会有这样的需求呢? 这个不合理啊, 横屏下肯定是以横向来创建控件的。
3. android如何禁止横竖屏切换
禁用横竖屏切换,有两种方式,第一种是在配置文件中配置,第二种是在java代码中设置。
第一种是在AndroidManifest.xml中,为activity节点配置android:screenOrientation属性,指定该activity为竖屏或横屏,我们将上面的这个activity的配置为竖屏,如下:
<activity
android:name="chengyujia.androidtest.OrientationActivity"
android:screenOrientation="portrait" />
再运行测试,此时无论手机屏幕方向如何,该activity始终是竖屏的。如果android:screenOrientation="landscape" 则始终是横屏。
下面来看第二种,
只要在onCreate方法中加一句
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
即可始终保持竖屏,如果要横屏,代码是
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
4. android如何在代码中判断横竖屏
Android中判断横竖屏是通过Configuration 这个类来判断的。
Configuration.ORIENTATION_LANDSCAPE 表示横屏。
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了。
5. android怎么设置横竖屏切换
方法一:
1、首先在android手机打开“设置”这个选项的,点击“显示”这个功能;
6. android中如何禁止竖屏,且横屏可以旋转
1、在AndroidManifest.xml里设置
android:screenOrientation="landscape", 强制横屏 ,不旋转
android:screenOrientation="sensorLandscape" 强制横屏,可旋转
常见属性:
"unspecified":默认值 由系统来判断显示方向.判定的策略是和设备相关的,所以不同的设备会有不同的显示方向.
"landscape":横屏显示(宽比高要长)
"portrait":竖屏显示(高比宽要长)
"user":用户当前首选的方向
"behind":和该Activity下面的那个Activity的方向一致(在Activity堆栈中的)
"sensor":有物理的感应器来决定。如果用户旋转设备这屏幕会横竖屏切换。
"nosensor":忽略物理感应器,这样就不会随着用户旋转设备而更改了("unspecified"设置除外)。
2、在activity中设置
@Override
protectedvoidonResume(){
super.onResume();
Log.i(TAG,"onResumecalled.");
try{
//强制横屏,不允许横屏旋转
//ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
//强制横屏,允许横屏旋转
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
}catch(NullPointerExceptione){}
}
7. android编译的时候 是如何配置默认显示横竖屏
1,在Mainfest中设置。同意楼上的。
2,在OnStart或者OnCreate中设置也可以。
如果你说设置系统的话,这个就得看系统源码是如何配置的,记得不是太清了,在Configure.java里面吧,有几个函数是根据一些常量设定每个 横纵屏的设置。你应该不是做系统的吧,因为不会有任何一个厂商会让系统所有的内容都定死。
8. android系统强制横竖屏实现
横屏:
按照下面代码示例修改Activity的onResume方法
@Override
protected void onResume() {
/**
* 设置为横屏
*/
if(getRequestedOrientation()!=ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
super.onResume();
}
或者在配置文件中对Activity节点添加android:screenOrientation属性(landscape是横向,portrait是纵向)
android:launchMode="singleTask" android:screenOrientation="portrait">
竖屏:
要设置成竖屏将上面代码中,属性设置成 SCREEN_ORIENTATION_PORTRAIT即可。
9. android 强制设置横屏 判断是横屏还是竖屏
判断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"设置除外 )。
10. 如何才能让Android系统永远是竖屏
不用这么麻烦,在设置里选“声音和显示”,里面有个方向(旋转手机时自动改变方向),把勾去掉就行