我添加了
android:configChanges="orientation"
并重写了 onConfigurationChanged()
方法。我想要做的是,只有在设备具有平板电脑分辨率设置(较短的一侧大于480px——欢迎提供更好的处理方式!)时才允许横向方向改变。我考虑这会有两种方法可行,但在我的手机或模拟器上测试都不起作用。
我的第一个想法是不调用超类实现的 onConfigurationChanged()
方法,但我得到了一个异常抛出,指责我没有调用超类。
我的第二个想法是在传递给超类之前,将 newConfig.orientation 手动设置为 Configuration.ORIENTATION_PORTRAIT
。在我的 Activity 和框架中的实际 Activity 类之间,我有一个名为 ActivityBase 的 Activity 基类,我也在其中进行了重写。我可以在 ActivityBase 中使用 Toast 查看 newConfig.orientation 的值,以确认确实传递了新值的配置对象,但它被忽略了,并且方向更改已经发生。
我应该在哪里放置代码,以便能够有条件地终止某些情况下的方向更改,并允许其他情况下的更改呢?
if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == SCREENLAYOUT_SIZE_XLARGE)
是否可行(如果您使用的是至少 API Level 9,其中添加了 xlarge)? - erichamion