2012-07-26 173 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