如何确定android设备分辨率是小,中还是大

时间:2019-03-26 07:25:02

标签: android xamarin.forms xamarin.android

我正在Xamarin.Forms应用程序上工作,我需要确定android屏幕/分辨率是小,中还是大,以便使用可用空间调整某些内容。例如,某些标签(单行)在较小的设备中被截断。因此,如果分辨率较小或较小,我可以进行一些调整。

在iOS中,当iPhone屏幕变大时,分辨率也会提高,因此可以轻松识别iOS中较小分辨率的设备。但是在android中,这似乎很难。

Android设备分辨率可从

获取
var resolutionH = Resources.DisplayMetrics.HeightPixels;
var resolutionW = Resources.DisplayMetrics.WidthPixels;

为了进行测试,我创建了以下模拟器并在其中运行应用程序。标签是否被截断这是我的结果。

Resolution  Density  Result
---------------------------
2560x1440   560      OK
1920x1080   400      OK

1280x720    320      Truncated
1280x720    280      OK
1280x720    240      OK
800x480     240      Truncated
800x480     160      OK

这里的问题是分辨率更高且DPI较低的设备不会引起任何问题。就像具有1280x720分辨率和240 DPI(或280 DPI)的设备一样。由于存在大量具有不同分辨率和密度的Android设备,因此这个问题似乎更加棘手。

是否有更好的方法来分类android设备(小型,中型和大型)?

2 个答案:

答案 0 :(得分:0)

您要查找的内容很容易在本机android中完成,您可以创建一个方法并检查DensityMetricsDensity,如下所示:

private string GetDeviceDensity()
    {
        var density = Resources.DisplayMetrics.DensityDpi;
        switch (density)
        {
            case DisplayMetricsDensity.Medium:
                return "MDPI";
            case DisplayMetricsDensity.High:
                return "HDPI";
            case DisplayMetricsDensity.Low:
                return "LDPI";
            case DisplayMetricsDensity.Xhigh:
                return "XHDPI";
            case DisplayMetricsDensity.Tv:
                return "TV";
            case DisplayMetricsDensity.Xxhigh:
                return "XXHDPI";
            case DisplayMetricsDensity.Xxxhigh:
                return "XXXHDPI";
            default:
                return "Unknown";
        }
    }

答案 1 :(得分:0)

在特定设备中标签文本被截断(对于我而言)或元素没有足够空间的原因是,使用密度(dpi / ppi)和密度桶对元素进行的实际像素计算屏幕落入。本文为计算不同显示密度的元素的物理尺寸提供了一个好主意。

经过详尽的研究,我能够通过结合屏幕宽度像素和密度来对设备屏幕进行分类。 (我从Android开发者网站Distribution dashboardSupport different screen sizes获得了数据)

我将屏幕宽度像素分为四类,然后使用以下公式计算每种显示密度的屏幕尺寸:

sqrt((widthPixels x widthPixels) + (heightPixels x heightPixels)) / density

screen configurations

然后,我在GSMArena中进行了搜索,以找到具有上表中的屏幕配置的设备。屏幕尺寸小于3英寸的大多数是智能手表,大于8英寸的可能是Tab和智能电视。因此,我将屏幕尺寸在3-8英寸之间的设备用作移动设备。