如何确定应用程序是否在Android上的平板电脑或移动设备上运行?

时间:2014-02-10 06:05:15

标签: android xml graphics tablet

我正在开发一个兼容移动屏幕和平板电脑屏幕的Android应用程序。

所以我为每个人创建了4个不同的屏幕。那是

  1. login_portrait.xml
  2. login_landscape.xml
  3. login_portrait_large.xml
  4. login_landscape.xml
  5. 但问题是如何找到任何用户使用的应用程序都在使用平板电脑或手机?

    有什么解决方案吗?

6 个答案:

答案 0 :(得分:4)

Go For This Link:

Developer Android

<resources>
    <bool name="isTablet">true</bool>
</resources>

因为sw600dp限定符仅对android 3.2以上的平台有效。如果您想确保此技术适用于所有平台(3.2之前),请在res / values-xlarge文件夹中创建相同的文件:

<resources>
    <bool name="isTablet">true</bool>
</resources>

然后,在“标准”值文件中(作为res / values /),将布尔值设置为false:

<resources>
    <bool name="isTablet">false</bool>
</resources>

然后在您的活动中,您可以获取此值并检查您是否在平板电脑尺寸设备中运行:

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

请检查并告诉我。希望它对您有所帮助。感谢。

答案 1 :(得分:2)

我使用这种方法:

public static boolean isTablet(Context mContext){
    return (mContext.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE;
}

就足够了,如果返回false,那么你的设备就是手机。

更多信息: How to detect device is Android phone or Android tablet?

答案 2 :(得分:2)

您可以通过Using configuration qualifiers实现此目标。将不同的.xml布局文件专门放在以下res文件夹中,android将为您完成。

res/layout-small/login.xml             // login layout for small portrait
res/layout-normal/login.xml             // login layout for normal portrait
res/layout-normal-land/login.xml       // login layout for normal land
res/layout-large/login.xml        // login layout for large portrait
res/layout-large-land/login.xml    // login layout for large land

你可以使用login.xml,android会为你选择合适的。

请注意。对于Android 3.2或更高版本,使用新的配置限定符系统。您可以从官方开发指南中阅读more

编辑:  顺便说一下,每个屏幕尺寸定义为:

  • xlarge屏幕至少为960dp x 720dp
  • 大屏幕至少为640dp x 480dp
  • 正常屏幕至少为470dp x 320dp
  • 小屏幕至少为426dp x 320dp

它们可以在某个时间重叠,请阅读this以获取更多信息。

答案 3 :(得分:2)

您可以将XML(bools.xml)文件放在以下文件夹中

  1. values-large
  2. values-xlarge
  3. values-normal
  4. values-small
  5. 适用于values-large/bools.xmlvalues-xlarge/bools.xml

    <bool name="tablet">true</bool>
    

    适用于values-normal/bools.xmlvalues-small/bools.xml

    <bool name="tablet">false</bool>
    

    然后以编程方式确定,

    boolean isTablet = context.getResources().getBoolean(R.bool.tablet);
    

答案 4 :(得分:1)

您可能需要在问题中添加更多信息。

您是否根据手机或平板电脑收集数据?如果是这样,您可能希望使用Javascript来检测分辨率stack overflow question

那,或者你可以只检测“用户代理”。

如果您需要根据浏览器类型使应用程序更具响应性,请尝试使用twitter-bootstrap: twitter-bootstrap

答案 5 :(得分:0)

public static boolean isTablet(Context context) {
    return (context.getResources().getConfiguration().screenLayout
            & Configuration.SCREENLAYOUT_SIZE_MASK)
            >= Configuration.SCREENLAYOUT_SIZE_LARGE;
}

您也可以将其置于基础 class中并使其受到保护,以便您可以在扩展基础 {{的所有活动中重复使用它1}}。