You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin中如何检测iOS、安卓平台设备类型(区分手机/平板)

跨平台应用识别手机/平板设备的官方可靠方案

不要依赖自行计算屏幕宽高像素的判断逻辑,这类逻辑在折叠屏、分屏模式、异形屏设备上很容易出现误判,iOS和Android都提供了系统级的设备类型识别API,可直接在现有代码的平台分支中使用:

iOS 端识别逻辑

iOS 系统直接对外暴露了设备习语属性,由系统返回当前设备的类型,不受屏幕缩放、分屏功能影响,识别准确率100%:

if(Device.RuntimePlatform == Device.iOS)
{
    // 需提前引用UIKit命名空间
    bool isTablet = UIDevice.CurrentDevice.UserInterfaceIdiom == UIUserInterfaceIdiom.Pad;
    if (isTablet)
    {
        // 平板设备业务逻辑
    }
    else
    {
        // 手机设备业务逻辑
    }
}

该属性可以准确区分iPhone、iPad、Mac Catalyst 运行场景,不需要额外兼容不同系统版本。

Android 端识别逻辑

Android 系统官方以600dp最小屏幕宽度作为区分手机和平板的标准,系统本身就是依据这个阈值加载对应尺寸的布局资源,直接读取系统配置中的该值即可,不需要自行计算实时宽高:

else if(Device.RuntimePlatform == Device.Android)
{
    // 需提前引用Android.Content.Res命名空间
    var smallestWidthDp = Android.App.Application.Context.Resources.Configuration.SmallestScreenWidthDp;
    bool isTablet = smallestWidthDp >= 600;
    if (isTablet)
    {
        // 平板设备业务逻辑
    }
    else
    {
        // 手机设备业务逻辑
    }
}

注意:这里的600dp阈值是Android官方定义的标准,不是自定义经验值。当折叠屏切换展开/折叠状态、应用开启分屏模式时,系统会自动更新该配置值,返回当前场景下的正确设备类型,比自行取屏幕宽高计算的方案稳定性高很多。

额外注意事项

  • 所有基于像素尺寸的判断逻辑都不可靠,不同设备像素密度差异极大,必须用系统提供的与密度无关的单位做判定
  • 如果是在共享项目层编写逻辑,可以通过依赖服务的方式调用上述平台专属API

内容的提问来源于stack exchange,提问作者TheHunter Shergill

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 14:21:13