处理方向有条件地改变

时间:2011-03-02 13:16:05

标签: java android android-configchanges

我添加了android:configChanges="orientation"并覆盖onConfigurationChanged()。我想做的是只有当设备具有平板电脑大小的显示分辨率设置(短边大于480px时才允许改变横向方向 - 建议更好的处理方式,这是值得欢迎的!)。我认为这可以通过以下两种方式之一工作,但在我的测试中,无论是在我的手机上还是在模拟器中都没有。

我的第一个想法是不要调用超级类onConfigurationChanged()的实现,但我得到一个异常抛出,抱怨我没有调用超类。

我的第二个想法是在将newConfig.orientation传递给超类之前手动将其设置为Configuration.ORIENTATION_PORTRAIT。在我的Activity和框架中的实际Activity类之间,我有一个ActivityBase类,我在其中使用的地方也覆盖了它。我可以在ActivityBase中干预newConfig.orientation的值,看看确实传递的配置对象确实有新值,但是它被忽略并且方向已经发生了变化。

在哪里可以放置允许我在某些情况下有条件地使方向改变短路并允许其在其他情况下允许的代码?

1 个答案:

答案 0 :(得分:2)

我会在Activity onCreate()方法中设置要求的方向,如下所示:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

如果显示器不是xhdmi显示器或具有所需的分辨率。