android - 如何以编程方式在 Android 中查找平板电脑或手机?

标签 android android-layout

我的情况是手机和平板电脑的逻辑是相同的。但布局略有不同。我尝试使用以下代码

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

Samsung Tab 10"的分辨率为 1280 * 800,S3 的分辨率为 1270 * 720。此代码将 Tab 和 Phone 的 Size 返回为 XLarge,因为其检查标准为 > 960 * 720。

我已经测试在 Res 的布局文件夹中插入相应的 UI 作为 Layout、Layout-Large 和 Layout-xLarge。但这无论如何都没有影响。在检查时,它从 Layout 文件夹中获取了 UI。

无论如何,即使我将 UI 放在不同的布局文件夹中,我也必须在类文件中检查它们以设置相应的 ContentView。

还有其他方法可以找到吗?

最佳答案

Android 培训中讨论了这个主题:

http://developer.android.com/training/multiscreen/screensizes.html#TaskUseSWQuali

Here is implementation ,

归功于 ol_v_er对于这种简单易行的方法。

一些附加信息

您现在有标志表明您的应用程序是在手机还是平板电脑上运行。

我创建了两个包来处理 UI 及其功能,

com.phone
com.tablet

然后你将控制重定向到你需要的包

boolean tabletSize = getResources().getBoolean(R.bool.isTablet);
if (tabletSize) {
    // do something
    //Start activity for tablet
} else {
    // do something else
    //Start activity for phone     
}

Refer

注意:我认为对于 10 英寸和 7 英寸屏幕的应用程序都从 res/values-sw600dp/ 获取资源。但更具体地说,我认为对于 10 英寸平板电脑屏幕,我们可以使用 res/values-sw720dp/

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

关于android - 如何以编程方式在 Android 中查找平板电脑或手机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16784101/

相关文章:

java - setText ("test") 正在卡住 UI

android - 如何截取屏幕截图?

android - 如何为 Android 应用程序中的所有 Activity 创建固定导航栏

java - 只有部分布局参数有效

java - 具有 onclick 帮助的 Recyclerview

Android 传感器读数不返回所有传感器

android - Android 中应该在 LayoutView 还是 ImageView 中设置背景?

java - 使用 BottomBar 可以防止 fragment 打开?

android - 重用 AlertDialog 标题布局

java - 交错网格布局管理器 : Adding Margin makes the layout items pushed to the side