2012-11-29 231 views
1

我想引用WindowManger,所以我可以得到默认屏幕的尺寸,但我似乎无法找到它的参考。 (这是API 8,froyo 2.2)。我甚至尝试:Monodroid屏幕尺寸

dynamic wm = Android.App.Application.Context.GetSystemService(Android.Content.Context.WindowService); 
Display display = wm.getDefaultDisplay(); 

,但得到指示Object并不getDefaultDisplay响应错误。

我也试过:

var wm = (IWindowManager)Android.App.Application.Context.GetSystemService(Android.Content.Context.WindowService); 
Display display = wm.DefaultDisplay; 

,但我得到一个无效转换异常。

看到this post,但我无法解决WindowManager。任何想法发生了什么?

+0

(1)'Context.GetSystemService返回的默认类型()'将是一个'Java.Lang.Object',而且不会有'getDefaultDisplay',因此我对使用回答'.JavaCast ()'。 (2)'dynamic'不会给你Java成员,只会给你C#成员,所以如果(1)不在场,它仍然需要成为'DefaultDisplay'。 (3)'动态'+链接可能是痛苦的。 – jonp

回答

4

WindowManagerIWindowManager接口。取而代之的是演员,尝试使用.JavaCast<T>()扩展方法:

var wm = context.GetSystemService(Android.Content.Context.WindowService) 
    .JavaCast<IWindowManager>(); 
var d = wm.DefaultDisplay; 

您还可以检查出AccelerometerPlay sample

+0

不错!那样做了。谢谢。我们已经完成了更多的MT工作。这对于交叉编译很有用。 – Candide

0

另一个简单的方法是

显示显示= this.WindowManager.DefaultDisplay;

您可以从显示对象中获取宽度和高度属性。

0
using Android.Runtime; //for JavaCast 

var windowManager = Android.App.Application.Context.GetSystemService(Android.Content.Context.WindowService).JavaCast<IWindowManager>();