>>分享Android开发相关的技术 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 21219 个阅读者 刷新本主题
 * 贴子主题:  Android强制设置横屏或竖屏-Alex_Michel 回复文章 点赞(0)  收藏  
作者:flybird    发表时间:2020-01-07 05:47:26     消息  查看  搜索  好友  邮件  复制  引用

全屏

在Activity的onCreate方法中的 setContentView(myview)调用之前添加下面代码  re questWindowFeature(Window.FEATURE_NO_TITLE);//隐藏标题

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,

  WindowManager.LayoutParams.FLAG_FULLSCREEN);//设置全屏

横屏

按照下面代码示例修改Activity的onResume方法  @O  verride

pr otected 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

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

常亮

view.setKeepScreenOn(true)

           不加任何旋转屏幕的处理代码的时候,旋转屏幕将会导致系统把当前activity关闭,重新打开。
如果只是简单的界面调整,我们可以阻止此问题的发生,屏幕旋转而自己调整屏幕的元素重构。
首先我们需要修改AndroidManifest.xml文件:
<activity android:name=".Magazine">
</activity>
//修改为:
<activity android:name=".Magazine"
  android:configChanges="orientation|keyboard">
</activity>
这样是让程序能够响应旋转屏幕的事件。
然后重写onConfigurationChanged方法:
@Override
public void onConfigurationChanged(Configuration newConfig) {
  // TODO Auto-generated method stub
  super.onConfigurationChanged(newConfig);
  Log.v(" == onConfigurationChanged");
  processLayout();
}

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

           在我们用Android开发过程中, 会碰到Activity在切换到后台或布局从横屏LANDSCAPE切换到PORTRAIT,会重新切换Activity会触发一次onCreate方法。

在Android开发中这种情况视可以避免的,我们可以在androidmanifest.xml中的activit元素加入这个属性 android:configChanges="orientation|keyboardHidden" 就能有效避免oncreat方法的重复加载,

androidmanifest.xml内容如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=" http://schemas.android.com/apk/res/android"
      package="com.demo"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".DemoGPS"
             android:configChanges="orientation|keyboardHidden"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
  <uses-library android:name="com.google.android.maps" />

     </application>
    <uses-sdk android:minSdkVersion="7" />

  <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>

</manifest>

           同时在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

"设置除外 )。


      

----------------------------
原文链接:https://blog.51cto.com/2960629/701227



[这个贴子最后由 flybird 在 2020-01-07 20:04:44 重新编辑]
  Java面向对象编程-->接口
  JavaWeb开发-->Servlet技术详解(Ⅲ)
  JSP与Hibernate开发-->映射一对多关联关系
  Java网络编程-->客户端协议处理框架
  精通Spring-->通过Axios访问服务器
  Vue3开发-->Vue指令
  Android开发教程之Java开发环境配置和运行第一个程序
  Android OpenGL 学习笔记
  Android中shape的使用
  Android 事件处理
  Android Application Theme的实现及管理
  启动和运用Android VNC Server
  Android的init过程详解
  Android Adapter使用范例
  Android多线程断点续传
  Android SDCard Mount 流程分析
  Scroll的原理和简单使用
  android使用工具性能优化
  android 拼图小游戏
  Android 开发环境搭建
  怎么让软键盘弹出时,部分控件上移
  更多...
 IPIP: 已设置保密
树形列表:   
1页 1条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。