【发布时间】:2020-10-28 06:13:51
【问题描述】:
如何检测设备是小还是大? 我不需要检测是否是平板电脑。
这个概念取自https://devblogs.microsoft.com/xamarin/styling-for-multiple-device-resolutions/
我们使用下面的方法并相应地加载适当的样式,但是由于我没有考虑密度,因此并不准确。
如何改进或重写此方法,以便它给我更好的结果并更准确地检测设备的大小。
当前
const int smallWightResolution = 768;
const int smallHeightResolution = 1280;
public static bool IsASmallDevice()
{
// Get Metrics
var mainDisplayInfo = Xamarin.Essentials.DeviceDisplay.MainDisplayInfo;
// Width (in pixels)
var width = mainDisplayInfo.Width;
// Height (in pixels)
var height = mainDisplayInfo.Height;
return (width <= smallWightResolution && height <= smallHeightResolution);
}
尝试使用密度但不知道公式是什么
public static bool IsSmallDevice()
{
//we don't support tablet so tablet don't apply.
int smallWidthResolution = 768;
int smallHeightResolution = 1280;
double screenWidth;
double screenHeight;
bool isSmallDevice;
var metrics = Xamarin.Essentials.DeviceDisplay.MainDisplayInfo;
switch (Xamarin.Forms.Device.RuntimePlatform)
{
case Xamarin.Forms.Device.Android:
//Android not sure how to sort of correctly detect if is a small device
screenWidth = (metrics.Width - 0.5f) / metrics.Density;
screenHeight = (metrics.Height - 0.5f) / metrics.Density;
isSmallDevice = "???????";
break;
case Xamarin.Forms.Device.iOS:
//ios no changes
isSmallDevice = metrics.Width <= smallWidthResolution
&& metrics.Height <= smallHeightResolution;
break;
}
return isSmallDevice;
}
更新
Huawei P9 Android 7.0
Density=2.5
Width=1080
Height=2160
ScreenHeight(Calculated)=864
ScreenWidth(Calculated)=432
Samsung A20 Android (new phone)
Density=2
Width=720
Height=1560
ScreenHeight(Calculated)=780
ScreenWidth(Calculated)=360
有什么建议吗?
【问题讨论】:
-
Application.Current.MainPage.Width可以帮忙吗? -
您好,您觉得工作怎么样?
-
如果您正在寻找可以告诉您设备是手机还是平板电脑的东西,您可以查看成语:docs.microsoft.com/en-us/dotnet/api/…
-
@FreakyAli 感谢您的回复。我不需要告诉我是平板电脑还是手机的东西,而是区分手机大小/密度的东西,以便我可以根据本文加载各自的样式devblogs.microsoft.com/xamarin/…
标签: xamarin.forms xamarin.essentials