我有一个应用程序,使一些后台工作人员。当后台工作正在运行时,会显示一个进度圈,如果设备在这段时间内旋转,那么活动就是“重置”,我想避免这种情况。
出于这个原因,我决定在这个过程中禁用方向。我已经看到了这个问题的不同线索,但没有一个有有效的解决方案,至少在我的情况下是这样。
发布的解决方案是关于修复活动方向的,但如果使用以下命令,则必须处理反向不返回的事实:
getResources().getConfiguration().orientation上面的函数对于纵向和REVERSE_PORTRAIT情况都返回SCREEN_ORIENTATION_PORTRAIT (至少在我的测试中是这样)。
所以在最后我使用了旋转值来处理这个问题,所以我的代码“禁用旋转”是:
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的设备上却不能像预期的那样工作。
我想在活动生命周期中管理轮换应该是一个常见的问题,但我还没有找到合适的解决方案。也许我找错了方向,所以我们真的很欢迎任何帮助。
提前谢谢你,伊万。
发布于 2013-11-17 02:18:09
如果您想要禁用电话的方向更改,则可以在清单中使用此代码
<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);
}
}发布于 2013-11-17 02:10:21
试试这个..。
您的代码中没有错误。我检查了一下是对的。使用onConfigurationChanged中可能会产生差异的代码,并在下面的代码中使用另一项来禁用活动重置。
<activity
android:name="YourActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" android:windowSoftInputMode="adjustPan"/> 发布于 2013-11-17 02:07:54
您可以覆盖on onConfiguratoinChanged方法以禁用方向更改:
@Override
public void onConfigurationChanged(Configuration newConfig) {
// ignore orientation change
if (newConfig.orientation != Configuration.ORIENTATION_LANDSCAPE) {
super.onConfigurationChanged(newConfig);
}
}不要忘记在AndroidManifest.xml文件中启用方向更改的监听程序:
<activity android:configChanges="orientation" >https://stackoverflow.com/questions/20021803
复制相似问题