我正在开发一个基于Android的移动应用程序,minSdkVersion=15
。我想为平板电脑支持两种方向,而对于智能手机则仅支持纵向方向。一切都很顺利,但是我遇到了一个小故障,让我感到很疯狂。
当智能手机处于横向模式时,我尝试触发一个新的Activity,它会在横向模式下打开一段时间,然后自动旋转到纵向模式。
我的每个Activity都扩展了一个GeneralActivity类:
public class GeneralActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// If smartphone lock orientation to portrait
if (!Helper.isTablet(this.getApplicationContext())){
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
}
}
我可以检测带有此功能的平板电脑:
public class Helper {
public static boolean isTablet(Context context){
Configuration config = context.getResources().getConfiguration()
return config.smallestScreenWidthDp >= 600;
}
}
我选择不在Manifest.xml文件中指定android:screenOrientation
,因为这样可以支持平板电脑的所有界面方向。我是否遗漏了什么?
编辑
我决定采用Jonathan提出的最佳实践,但我描述的问题仍然存在。 这是我在github上的存储库: https://github.com/giacmarangoni/Android-Orientation-Test