Android确定是否应使用多片段布局

时间:2011-12-27 02:56:38

标签: android android-fragments

在为Android 3.x制作应用程序时,您基本上只需检查设备是否处于横向状态,以查看它是否可以并排放置多个片段。但这只是因为您基本上保证该设备是平板电脑。

随着兼容性库和android 4.0的引入,我无法想到我会认为什么是“好”的方法来确定我是否可以摆脱并排片段或者应该恢复到标准的一个片段'屏幕。'

在NewsReader示例应用程序中,Google为每个常见分辨率都有一个特殊值文件,每个分辨率都有一个布尔值,表示分辨率是否应支持2片段布局,但我认为这种方式设计得很差。我能想到的唯一方法是检查屏幕的大小(猜测它是平板电脑还是至少足以破坏布局),然后检查方向。

因此,如果有人知道如何轻松有效地检查这一点,请告诉我!

2 个答案:

答案 0 :(得分:6)

您可以使用以下方法实际查看屏幕尺寸类型(小型,普通型,大型等):

getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK

那将返回一个int,你可以检查以下任何一个:

Configuration.SCREENLAYOUT_SIZE_SMALL
Configuration.SCREENLAYOUT_SIZE_NORMAL
Configuration.SCREENLAYOUT_SIZE_LARGE
Configuration.SCREENLAYOUT_SIZE_UNDEFINED

然后你可以使用

检查方向
getResources().getConfiguration().orientation

将匹配以下任何可能性

Configuration.ORIENTATION_PORTRAIT
Configuration.ORIENTATION_LANDSCAPE
Configuration.ORIENTATION_SQUARE
Configuration.ORIENTATION_UNDEFINED

通过这种方式,您可以根据屏幕大小和方向在空间允许的情况下添加片段,从而模拟多个视图。

答案 1 :(得分:4)

我为片段创建了2个布局,一个有一个容器(ViewGroup),第二个布局有两个并排的容器。我使用Android的文件夹结构来指定我想要多片段(2容器)布局的场景。然后在代码中,检查是否存在第二个容器,以确定您是否是多面板。

isMultipanel = false;
ViewGroup container2 = findViewById(R.id.container_2);
if (container2 != null) {
    isMultipanel = true;
}

尽量不要将其视为平板电脑或手机,而是足够宽或不足以容纳2个面板。

如果我想在普通尺寸设备(< = 5“)和大尺寸(5” - 7“)上使用多面板,只有它们处于风景中,但总是在xlarge(> 7”)上,我会放多面板布局文件:

  • 布局陆
  • 布局大陆
  • 布局XLARGE

然后您不必在代码中进行大小检查,因为Android已经为您处理了这个问题。