使用Xamarin获取Android屏幕尺寸

5

我想知道是否有简单的方法,可以使用C#在Xamarin中获取Android屏幕大小的高度和宽度。 我需要获取屏幕大小以便在我的适配器类中使用它。 我尝试过使用display和IWindowManager,但都没有成功。 希望能得到任何帮助或指引。 谢谢您提前!!


3
https://developer.xamarin.com/recipes/android/resources/device_specific/detect_screen_size/ - Jason
Jason,感谢您的快速回复!我实际上已经尝试过这个方法,但是当我有var metrics = Resource.DisplayMetrics;时,我会收到一个错误,指出'Resource'不包含'DisplayMetrics'的定义。 - Aaron B
3
its "Resources", plural - Jason
杰森,非常感谢。是我不好!哈哈 - Aaron B
Jason,我还有一个问题希望你能帮我解决。当我缩放位图时,在将apk部署到我的Note 3上运行时它可以正常工作,但是当我将apk部署到Nexus模拟器上时,位图没有被调整大小。你有什么想法吗? - Aaron B
4个回答

17

对我最有效的答案是使用

var metrics = Resources.DisplayMetrics;

感谢大家的帮助!


6
var metrics = Resources.DisplayMetrics;

        height = metrics.HeightPixels;
        width = metrics.WidthPixels;

5

以下是一个获取屏幕信息的代码片段:

var metrics = new DisplayMetrics();
var windowManager = this.GetSystemService(Context.WindowService) as IWindowManager;
windowManager.DefaultDisplay.GetMetrics(metrics);

var height = metrics.HeightPixels;
var width = metrics.WidthPixels;
var xdpi = metrics.Xdpi;
var ydpi = metrics.Ydpi;
var density = metrics.Density;

唯一不确定的是,如果可以像这样对 IWindowManager 进行大小写转换,或者你需要做更具体的操作。希望能对你有所帮助。


0

要获取真实设备屏幕尺寸,请使用Xamarin.Essentials

与被接受的答案不同之处在于,这将提供您硬件准确的数字,而那个答案将给您减少状态和导航栏后的尺寸。

var mainDisplayInfo = DeviceDisplay.MainDisplayInfo;
var realHeightInPx = mainDisplayInfo.Height;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接