Pio*_*trP 1 xamarin xamarin.forms
我需要在Xamarin类PCL中获得DPI设备。我不想使用Xamarin.Essentials。如果可能的话,我可以使用本机接口执行此操作吗?
在您的pcl中创建一个名为IDisplayInfo的新接口:
public interface IDisplayInfo
{
int GetDisplayWidth();
int GetDisplayHeight();
int GetDisplayDpi();
}
Run Code Online (Sandbox Code Playgroud)
在您的android实现中,添加一个新类:
[assembly: Dependency(typeof(DisplayInfo))]
namespace YourAppNamespace.Droid
{
public class DisplayInfo : IDisplayInfo
{
public int GetDisplayWidth()
{
return (int)Android.App.Application.Context.Resources.DisplayMetrics.WidthPixels;
}
public int GetDisplayHeight()
{
return (int)Android.App.Application.Context.Resources.DisplayMetrics.HeightPixels;
}
public int GetDisplayDpi()
{
return (int)Android.App.Application.Context.Resources.DisplayMetrics.DensityDpi;
}
}
}
Run Code Online (Sandbox Code Playgroud)
并在iOS实现中添加相同的类:
[assembly: Dependency(typeof(DisplayInfo))]
namespace YourNamespace.iOS
{
public class DisplayInfo : IDisplayInfo
{
public int GetDisplayWidth()
{
return (int)UIScreen.MainScreen.Bounds.Width;
}
public int GetDisplayHeight()
{
return (int)UIScreen.MainScreen.Bounds.Height;
}
public int GetDisplayDpi()
{
return (int)(int)UIScreen.MainScreen.Scale;
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在,在共享代码中,您可以调用
int dpi = DependencyService.Get<IDisplayInfo>().GetDisplayDpi();
Run Code Online (Sandbox Code Playgroud)
并且应该很好走。请注意,我还添加了获取屏幕宽度和高度的方法,基本上是因为我已经在代码中包含了它们,而且无论如何您迟早都需要它们。
| 归档时间: |
|
| 查看次数: |
471 次 |
| 最近记录: |