2012-07-26 174 views
6

我有一個從活動子就像啓動一個視圖子類:獲取屏幕尺寸不

this.setContentView(instanceOfMyView); 

在我的視圖子類我想和屏幕尺寸的一些工作,但這裏所有的人說:它應該像開始:

DisplayMetrics dm = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(dm); 
screenWidth = dm.widthPixels; 
screenHeight = dm.heightPixels; 

getWindowManager()是,只能從活動子類中調用的方法(我說得對不對?)

那麼,是不是壞的想法和我需要在活動中獲取屏幕大小,並將其用作視圖構造函數中的參數,或者有辦法在視圖子類中獲取屏幕大小?也許,只需要以某種方式獲得視圖類中活動實例的鏈接?

在此先感謝。

回答

25

是有一種方法,如果你能通過上下文對象到非活動類,

int width= context.getResources().getDisplayMetrics().widthPixels; 
    int height= context.getResources().getDisplayMetrics().heightPixels; 

你不需要活動對象本身。

+1

完美的是,我已經在視圖子類的構造函數中有'context'對象。謝謝。 – 2012-07-26 13:00:29

+0

很高興它幫助你:) – 2012-07-26 13:01:57

4
DisplayMetrics metrics = getBaseContext().getResources().getDisplayMetrics();   
    final int w = metrics.widthPixels; 
    final int h = metrics.heightPixels; 
+1

似乎是'getBaseContext()'不在視圖子類中工作,但只是'getContext()'工作。 – 2012-07-26 13:07:29