在 AndroidManifest 中:期待 android:screenOrientation="unspecified"
In AndroidManifest: Expecting android:screenOrientation="unspecified"
Android Studio 3.6.
我希望我的应用程序始终处于 portrait
模式。所以在我的 AndroidMainfest.xml
:
<activity
android:name=".activity.SplashActivity"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
我 运行 应用程序和 SplashActivity
以 portrait
模式显示。好的。
但编辑器显示以下错误:
Expecting android:screenOrientation="unspecified"
为什么?
尝试将以下内容放入 activity 标签
android:configChanges="orientation"
android:screenOrientation="portrait"
它只影响 Android Studio 3.6+
这里的问题是什么?
出现此问题是因为 android 框架希望用户自己控制应用程序方向,因此不建议限制您的应用程序方向,例如,如果用户想要横向使用应用程序,他只需翻转设备,传感器就会执行工作,但当开发人员限制屏幕方向时,即使旋转传感器工作,应用程序仍将保持预定义状态,以某种方式限制用户的设备功能。
现在怎么办?
你有两个选择。
首先是忽略该错误,因为它不会导致任何构建失败,即使我正在做同样的事情并且 apk/aab 生成与往常一样
另一种选择是提供横向布局或像某些应用程序一样处理旋转,这些应用程序可以识别方向是否发生变化,它们将提示用户更改方向,因为在这种方向上不支持该应用程序
将来可能会改变 => 目前它不会影响我们的构建过程,但将来可能会改变
在 Android studio 3.6.0 中,我猜他们希望用户处理方向并鼓励开发人员使用 ViewModel 东西。
让我详细解释一下screenOrientation
android:screenOrientation="portrait"
会给你错误,你必须指定
android:screenOrientation="fullSensor" or android:screenOrientation="unspecified"
fullSensor 表示您是否打开 "Rotate off" 它将根据您移动 phone
改变方向
unspecified 意味着如果你打开了旋转关闭那么它将只停留在那个方向,如果没有那么它会根据你移动改变方向 phone.
在您的清单标签中(就在 xmlns:android="http://schemas.android.com/apk/res/android"
下方),将
xmlns:tools="http://schemas.android.com/tools"
然后在 application 标签里面,把
tools:ignore="LockedOrientationActivity"
tools:ignore="GoogleAppIndexingWarning,LockedOrientationActivity"
我遇到过这个问题,在我的要求中,一些 activity 将支持两个方向并且仍然保持纵向,在这种情况下,我通过以下步骤解决了:
Case-1:- 锁定方向
第一步:
请在 AndroidManifest.xml
中添加以下行 Application 标记
tools:ignore="LockedOrientationActivity"
<application
android:name=".activity.MyApplication"
tools:ignore="LockedOrientationActivity">
第 2 步: 如果您想锁定屏幕方向为纵向或横向
在 activity 标签
中添加以下行
android:screenOrientation="portrait" or "landscape"
Case-2:- 假设如果你想特别允许方向 activity 并且有一个特定的设计风景
第一步:
删除 configchanges 中的 Orientation 值并删除 activity 标签中存在的屏幕方向,我个人建议在 Activity 中使用 (LifecycleObserver) 以在更改方向时不丢失值。
android:configChanges="orientation"
android:screenOrientation="portrait" or "landscape"
这就是我解决这个问题的方法,希望对您有所帮助,谢谢,编码愉快。
我使用了以下程序。它非常适合我。在 Android studio 3.6.0 中,我认为他们希望用户处理方向并鼓励开发人员使用 ViewModel 的东西。使用以下过程忽略它。
首先添加:
xmlns:android="http://schemas.android.com/apk/res/android"
在清单标签中。
其次,添加
tools:ignore="LockedOrientationActivity"
在应用程序标签中。快乐编码。
我找到了 2 种方法来解决这个问题
首先,
Android Studio -> Preferences (for Mac) or Settings (for Windows)
-> Search "chrome"
-> Uncheck "Activity is locked to an orientation"
-> Apply and Ok
-> Sync Project with Gradle file
第二,
Select "Run" from the main menu
-> Edit Configurations.
-> Launch options - Launch
-> Select Nothing or Specified Activity
-> Sync Project with Gradle file
在 android:screenOrientation="portrait"
之后添加以下行
tools:ignore="LockedOrientationActivity"
然后点击Alt+Enter
尝试使用以下代码:
if(MainActivity.this.getResources().getConfiguration().orientation== Configuration.ORIENTATION_PORTRAIT){
MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);
}
Android Studio 3.6.
我希望我的应用程序始终处于 portrait
模式。所以在我的 AndroidMainfest.xml
:
<activity
android:name=".activity.SplashActivity"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
我 运行 应用程序和 SplashActivity
以 portrait
模式显示。好的。
但编辑器显示以下错误:
Expecting android:screenOrientation="unspecified"
为什么?
尝试将以下内容放入 activity 标签
android:configChanges="orientation"
android:screenOrientation="portrait"
它只影响 Android Studio 3.6+
这里的问题是什么? 出现此问题是因为 android 框架希望用户自己控制应用程序方向,因此不建议限制您的应用程序方向,例如,如果用户想要横向使用应用程序,他只需翻转设备,传感器就会执行工作,但当开发人员限制屏幕方向时,即使旋转传感器工作,应用程序仍将保持预定义状态,以某种方式限制用户的设备功能。
现在怎么办? 你有两个选择。 首先是忽略该错误,因为它不会导致任何构建失败,即使我正在做同样的事情并且 apk/aab 生成与往常一样 另一种选择是提供横向布局或像某些应用程序一样处理旋转,这些应用程序可以识别方向是否发生变化,它们将提示用户更改方向,因为在这种方向上不支持该应用程序
将来可能会改变 => 目前它不会影响我们的构建过程,但将来可能会改变
在 Android studio 3.6.0 中,我猜他们希望用户处理方向并鼓励开发人员使用 ViewModel 东西。 让我详细解释一下screenOrientation
android:screenOrientation="portrait"
会给你错误,你必须指定
android:screenOrientation="fullSensor" or android:screenOrientation="unspecified"
fullSensor 表示您是否打开 "Rotate off" 它将根据您移动 phone
改变方向unspecified 意味着如果你打开了旋转关闭那么它将只停留在那个方向,如果没有那么它会根据你移动改变方向 phone.
在您的清单标签中(就在 xmlns:android="http://schemas.android.com/apk/res/android"
下方),将
xmlns:tools="http://schemas.android.com/tools"
然后在 application 标签里面,把
tools:ignore="LockedOrientationActivity"
tools:ignore="GoogleAppIndexingWarning,LockedOrientationActivity"
我遇到过这个问题,在我的要求中,一些 activity 将支持两个方向并且仍然保持纵向,在这种情况下,我通过以下步骤解决了:
Case-1:- 锁定方向
第一步: 请在 AndroidManifest.xml
中添加以下行 Application 标记tools:ignore="LockedOrientationActivity"
<application
android:name=".activity.MyApplication"
tools:ignore="LockedOrientationActivity">
第 2 步: 如果您想锁定屏幕方向为纵向或横向 在 activity 标签
中添加以下行android:screenOrientation="portrait" or "landscape"
Case-2:- 假设如果你想特别允许方向 activity 并且有一个特定的设计风景
第一步: 删除 configchanges 中的 Orientation 值并删除 activity 标签中存在的屏幕方向,我个人建议在 Activity 中使用 (LifecycleObserver) 以在更改方向时不丢失值。
android:configChanges="orientation"
android:screenOrientation="portrait" or "landscape"
这就是我解决这个问题的方法,希望对您有所帮助,谢谢,编码愉快。
我使用了以下程序。它非常适合我。在 Android studio 3.6.0 中,我认为他们希望用户处理方向并鼓励开发人员使用 ViewModel 的东西。使用以下过程忽略它。
首先添加:
xmlns:android="http://schemas.android.com/apk/res/android"
在清单标签中。
其次,添加
tools:ignore="LockedOrientationActivity"
在应用程序标签中。快乐编码。
我找到了 2 种方法来解决这个问题
首先,
Android Studio -> Preferences (for Mac) or Settings (for Windows)
-> Search "chrome"
-> Uncheck "Activity is locked to an orientation"
-> Apply and Ok
-> Sync Project with Gradle file
第二,
Select "Run" from the main menu
-> Edit Configurations.
-> Launch options - Launch
-> Select Nothing or Specified Activity
-> Sync Project with Gradle file
在 android:screenOrientation="portrait"
tools:ignore="LockedOrientationActivity"
然后点击Alt+Enter
尝试使用以下代码:
if(MainActivity.this.getResources().getConfiguration().orientation== Configuration.ORIENTATION_PORTRAIT){
MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);
}