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

问题描述 投票:0回答:2

我正在开发一个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设备(小型,中型和大型)?

android xamarin.forms xamarin.android
2个回答
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";
        }
    }

0
投票

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

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

我已将屏幕宽度像素分为4类,然后使用以下公式计算每个显示密度的屏幕大小:

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

screen configurations

然后我在GSMArena中搜索了上表中有屏幕配置的设备。屏幕尺寸低于3英寸主要是智能手表,超过8英寸可能是标签和智能电视。所以我采用屏幕尺寸在3-8英寸之间的设备作为移动设备。

© www.soinside.com 2019 - 2024. All rights reserved.