欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  技术分享

Android强制锁定竖屏_App固定设置竖屏或横屏

程序员文章站 2022-03-01 13:23:14
...

很多时候我们在做Android开发的时候、由于各种原因、我们可能只会兼容竖屏、不会再做一套ui去适配横屏、那么这个时候我们就会让App应用固定为竖屏、本文会提供两种我在程序中使用的方法、希望对大家有用


1.Xml锁定横屏或竖屏

在没有设置屏幕方向的情况下会默认设置为:android:screenOrientation="unspecified"、即未指明屏幕方向、属性取值landscape为固定横屏、portrait为固定纵屏幕、会根据屏幕的方向做改变、在AndroidManifest.xml中配置、如果使某个Activity做横竖屏的变化、在Activity的标签中加入android:screenOrientation="portrait"、效果如下

<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
<application ... >
    <activity
        android:name="com.jsl.gt.qhstudent.MainActivity"
        android:label="@string/app_name"
        android:screenOrientation="portrait"
        android:theme="@android:style/Theme.Black.NoTitleBar" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>
</manifest>


2、Java代码实现方式

手动变换资源文件等操作、即是因为屏幕变换后会再次重启而调用oncreate()、所以判断当前的屏幕为横或竖方向后更改资源文件即可实现、代码如下

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setRequestedOrientation(ActivityInfo
        .SCREEN_ORIENTATION_LANDSCAPE);// 横屏 
    //setRequestedOrientation(ActivityInfo
        .SCREEN_ORIENTATION_PORTRAIT);//竖屏 
    setContentView(R.layout.main); 
}


屏幕会自动切换时、默认状态的应用程序、会重新调用onCreate、相当于重新启动了一次应用程序、同时、layout可能因为横屏带来不能合理适配的问题、为了解决旋屏和键盘切换引起的程序重启问题

还需要增加一个属性:android:configChanges、这个属性可以理解为一个监听器、它将拦截旋屏和键盘切换事件、阻止程序重启而变为回调onConfigurationChanged方法、这里常用的属性取值为:keyboardHidden|orientation