在开发android的应用中,有时候需要限制横竖屏切换。只需要在AndroidManifest.xml文件中加入android:screenOrientation属性限制。

  1. android:screenOrientation="landscape"是限制此页面横屏显示,
  2. android:screenOrientation="portrait"是限制此页面数竖屏显示。

android:screenOrientation设定该活动的方向,该值可以是任何一个下面的字符串:

"unspecified"
- 默認值. 由系統選擇顯示方向. 在不同的設備可能會有所不同.

"landscape"
- 橫向

"portrait"
- 縱向

"user"
- 用戶當前的首選方向

"behind"
- 與在活動堆棧下的活動相同方向

"sensor"
- 根據物理方向傳感器確定方向. 取決於用戶手持的方向, 當用戶轉動設備, 它跟隨改變.

"nosensor"
- 不經物理方向傳感器確定方向. 該傳感器被忽略, 所以當用戶轉動設備, 顯示不會跟隨改變. 除了這個區別,系統選擇使用相同的政策取向對於“未指定”設置. 系統根據“未指定”("unspecified")設定選擇相同顯示方向.

如果要使Activity的View界面全屏,只需要将最上面的信号栏和Activity的Title栏隐藏掉即可,隐藏Title栏的代码:

requestWindowFeature(Window.FEATURE_NO_TITLE);
  1. 配置文件里代码:
  2. android:theme="@android:style/Theme.NoTitleBar"
  3. 隐藏信号栏的代码:
  4. getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
  5. 其它使用:
  6. getWindow().setFlags(WindowManager.LayoutParams.TYPE_STATUS_BAR,WindowManager.LayoutParams.TYPE_STATUS_BAR);

横竖屏切换后Activity会重新执行onCreat函数,但是在Android工程的Mainfest.xml中加入android:screenOrientation="user" android:configChanges="orientation|keyboardHidden"之后,横竖屏切换之后就不会去执行OnCreat函数了,而是会去调用onConfigurationChanged(),这样我们就能控制横竖屏的切换了。
或者在res目录下建立layout-land和layout-port目录,相应的layout文件不变。layout-land是横屏的layout,layout-port是竖屏的layout。

如果想让它一直是横屏显示的话,只要在配置文件中设置android:screenOrientation="landscape"就行了,或者在代码中 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);。如果想让它一直是竖屏显示的话,只要在配置文件中设置android:screenOrientation="portrait"就行了,或者在代码中setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);。

启动的时候是横屏的话就横屏表示,纵屏的话就纵屏表示,手机切换横竖屏不能用。
第一步:在Mainfest.xml中追加android:screenOrientation="sensor" android:configChanges="orientation|keyboardHidden"

第二步:取得屏幕的长和宽,进行比较设置横竖屏的变量。
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
if (width > height) {
orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
} else {
orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
}


第三步:在onConfigurationChanged()函数中追加this.setRequestedOrientation(mOrientation)就行了
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
this.setRequestedOrientation(mOrientation);
}
切到别的画面的时候再回到原画面,它就仍然是横的或者是纵的。想让它从别的屏幕回来后,又重新横竖屏布局,只要在OnResume()中在设定下就行了,但是这个只支持横竖屏只有一个layout的。


更多相关文章

  1. Android(安卓)studio使用笔记。。。
  2. android和js的相互调用
  3. Android之增强文本框(TextInputEditText)
  4. Android中VISIBLE、INVISIBLE、GONE的区别
  5. android 背景图片
  6. 【转】android 图片自动切换
  7. android图片切换ImageSwichter的动画切换效果
  8. android图片切换ImageSwichter的动画切换效果
  9. android 向webview传值

随机推荐

  1. 常用函数类型和常用数据类型
  2. vue如何实现Json格式数据展示
  3. Nginx禁止ip访问或非法域名访问
  4. ClassList对象学习总结、表单事件非空验
  5. Python OpenCV形态学运算示例详解
  6. javascript-基础(五)
  7. classList对象、blur事件进行表单非空验
  8. 浅谈并发处理PHP进程间通信之System V IP
  9. 实例演示classList对象及表单非空验证
  10. 演示classList和表单非空验证