2012-11-29 94 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>();