我正在开发一个我不想管理savedInstances
方向更改的应用程序,这听起来很懒,但对于像我这样的初学者来说,这可能是一种痛苦学习一些技巧然后我可以将其实现到应用程序中。
尽管如此,我想以不同的方式支持风景和肖像。我想要做的是在启动应用程序时检测当前屏幕方向,然后将应用程序会话锁定到该方向。然后,应用程序必须重新启动以强制更改屏幕方向。如果检测到方向改变,我只需弹出一个对话框5秒钟,以请求重新启动应用程序。
这可能不是最好的解决方法,但我想这样做而且我不知道怎么做。任何帮助将不胜感激。谢谢!
答案 0 :(得分:1)
在清单文件的活动代码中添加以下属性
android:configChanges="orientation|screenSize"
答案 1 :(得分:0)
处理锁定/释放方向的类:
public class Orientation {
public static void lockOrientation(Activity activity) {
Display display = ((WindowManager) activity
.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
int rotation = display.getRotation();
int tempOrientation = activity.getResources().getConfiguration().orientation;
int orientation = 0;
switch (tempOrientation) {
case Configuration.ORIENTATION_LANDSCAPE:
if (rotation == Surface.ROTATION_0
|| rotation == Surface.ROTATION_90)
orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
else
orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
break;
case Configuration.ORIENTATION_PORTRAIT:
if (rotation == Surface.ROTATION_0
|| rotation == Surface.ROTATION_270)
orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
else
orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT;
}
activity.setRequestedOrientation(orientation);
}
public static void releaseOrientation(Activity activity) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
}
}
然后只需在onCreate中调用您的活动Orientation.lockOrientation(this)