【发布时间】:2017-03-21 19:01:55
【问题描述】:
我正在使用minSdkVersion=15 开发基于Android 的移动应用程序。我想同时支持平板电脑的方向和智能手机的纵向。一切都像一个魅力,但我遇到了一个让我发疯的小错误。
当智能手机处于横向模式并且我尝试触发一个新的 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,因为这样我就能够支持平板电脑的所有界面方向。
我错过了什么吗?
编辑
我决定应用乔纳森回答中建议的最佳实践,但我描述的问题仍然存在。这是我在 github 上的仓库:https://github.com/giacmarangoni/Android-Orientation-Test
【问题讨论】:
-
嗨,我遇到了同样的问题。它只发生在牛轧糖设备上。你有运气吗?
标签: java android android-activity mobile android-orientation