gpt4 book ai didi

android - 以编程方式禁用和启用 Android Activity 中的方向更改

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:58:41 25 4
gpt4 key购买 nike

我有一个应用程序可以制作一些后台人员。当后台工作正在运行时,会显示一个进度圆圈,如果设备在此期间旋转,则 Activity 将“重置”,我想避免这种情况。

出于这个原因,我决定在此过程中禁用方向。我已经看到了这个问题的不同线程,但没有一个有效的解决方案,至少在我的例子中是这样。

已发布的解决方案是关于修复 Activity 方向的,但您必须处理这样一个事实:如果您使用:

getResources().getConfiguration().orientation

上面的函数在 PORTRAIT 和 REVERSE_PORTRAIT 情况下都返回 SCREEN_ORIENTATION_PORTRAIT(至少在我的测试中是这样)。

所以最后我使用 Rotation 值来处理它,所以我的代码“禁用旋转”是:

int rotation = getWindowManager().getDefaultDisplay().getRotation();

switch(rotation) {
case Surface.ROTATION_180:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
break;
case Surface.ROTATION_270:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
break;
case Surface.ROTATION_0:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
break;
case Surface.ROTATION_90:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
break;
}

并再次允许方向:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);

这在搭载 Android 4.1.2 的设备中完美运行,但在搭载 Android 4.2.1 的设备中无法正常运行。

我想在 Activity 生命周期中管理轮换应该是一个常见问题,但我一直未能找到合适的解决方案。可能是我看错了方向,所以非常欢迎任何帮助。

提前致谢,伊万。

最佳答案

如果您想禁用手机的方向更改,则可以在 list 中使用此代码

<activity android:name=".class_name"

//如果你想要纵向屏幕

android:screenOrientation="portrait" >

//如果你想在横屏模式下显示

android:screenOrientation="landscape" >

如果你想让你的手机改变方向但阻止进程重新启动,那么你可以在你的类中使用 onConfigurationChanged 方法:

@Override
public void onConfigurationChanged(Configuration newConfig) {
// ignore orientation change
if (newConfig.orientation != Configuration.ORIENTATION_LANDSCAPE) {
super.onConfigurationChanged(newConfig);
}
}

关于android - 以编程方式禁用和启用 Android Activity 中的方向更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20021803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com