2012-07-26 3 views
6

나는 그런 활동의 서브 클래스에서 시작 뷰 서브 클래스가 : 나는 화면 크기와 몇 가지 작업을 만들고 싶어 내보기 서브 클래스 점에서얻기 화면 크기되지는

this.setContentView(instanceOfMyView); 

을하지만, 모든 사람들이 여기에 말한다 이 같은 시작되어야한다 :

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

그러나 getWindowManager()에만 활동 서브 클래스에서 호출 할 수있는 방법이다 (I 맞죠?)

그래서, 나쁜 아이디어와 나는 활동에 화면 크기를 가져야하고보기 생성자에서 매개 변수로 사용하거나보기 하위 클래스에서 화면 크기를 얻을 수있는 방법이 있습니까? 어쩌면 뷰 클래스에서 활동의 인스턴스에 대한 링크를 어떻게 만듭니 까?

미리 감사드립니다. 당신이 당신의 비 활동 클래스에 컨텍스트 개체를 전달할 수 있습니다

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

당신은 활동 개체 자체가 필요하지 않은 경우

답변

25

예, 방법이있다.

+1

완벽 해요, 나는 이미 view 하위 클래스의 생성자에'context' 개체를 가지고 있습니다. 감사. –

+0

행복하게 도와주었습니다 :) –

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

'getBaseContext()'가 뷰 서브 클래스에서 작동하지 않는 것 같지만'getContext()'만이 작동했습니다. –