如何根据屏幕大小确定操作

时间:2015-03-27 02:38:20

标签: android android-layout android-fragments android-dialog

首先让我开始阅读以下内容,其中介绍了如何支持多个屏幕:

http://developer.android.com/guide/practices/screens_support.html

在平板电脑上显示左侧的列表视图,右侧显示详细信息,并使用列表视图作为活动并转到详细视图的新活动对我来说非常有意义。

但是我有一些略有不同的用例,我在android文档中找不到答案。

  1. 我想要展示一个'视图'。对于平板电脑(或更大的手机),我想在对话框中显示它。在较小的设备上,它应该是新活动中的视图。

  2. 我有一个带标记的地图视图。在平板电脑(或更大的手机)上,我想在标记点击上显示弹出窗口。在较小的设备上,我想导航到新的详细活动。

  3. Android文档谈论使用基于大小的布局来解决这些问题。

    对于#1,是否有一种查询操作方式单击以显示基于不同屏幕尺寸的布局文件的对话框与全屏活动/片段?我知道我可以等待操作点击,确定屏幕大小,如果是大型显示对话框则转到活动。但是,我没有看到谷歌在任何地方的文档推荐。

    #2相同。是否有一种方法可以使用布局文件显示基于不同屏幕尺寸的布局文件的标记点击与新活动/片段的地图弹出窗口?我可以再次等待标记点击并确定屏幕大小以及if / else做什么。

    对于这两种情况,我的Activity是一个包含地图片段的视图。我的布局几乎与所有屏幕尺寸相同。只是我想根据不同屏幕尺寸的动作(标记点击,操作栏项目点击)做不同的事情。

1 个答案:

答案 0 :(得分:0)

查看this document并阅读Google和the example中的this answer 您可以使用值文件夹将差异布局用于差异大小 例如:

res / values-large / layout.xml (平板电脑)

<resources>
     <item name="main" type="layout">@layout/tablet_layout</item>
     <bool name="isTablet">true</bool>
</resources>

res / values-sw600dp / layout.xml (平板电脑)

<resources>
     <item name="main" type="layout">@layout/tablet_layout</item>
     <bool name="isTablet">true</bool>
</resources>

res / values / layout.xml (适用于手机)

<resources>
     <item name="main" type="layout">@layout/phone_layout</item>
     <bool name="isTablet">false</bool>
</resources>

来自您的活动:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
}

从代码中检测手机或平板电脑:

boolean tabletSize = getResources().getBoolean(R.bool.isTablet);
if (tabletSize) {
    // do something
} else {
   // do something else
}

希望这有帮助!
P / s :如果您需要针对不同手机尺寸的单独布局,可以参考this link