2012-07-26 14 views
6

から画面サイズを取得する:その私の見解サブクラスで私はそのような活動のサブクラスから始まるビューのサブクラスではありませ活動サブクラス

this.setContentView(instanceOfMyView); 

を私は画面サイズでいくつかの仕事をしたいが、ここですべての人が言いますそれは次のように開始する必要があること:

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

しかしgetWindowManager()のみ活動サブクラスから呼び出すことができる方法がある(私は右だ?)

だから、それが悪いですアイデアと私は、アクティビティの画面サイズを取得し、ビューのコンストラクタのパラメータとして使用する必要がありますか、ビューのサブクラスで画面サイズを取得する方法がありますか?多分、どうにかしてビュークラスのアクティビティのインスタンスへのリンクを取得する必要がありますか?

ありがとうございます。あなたは、あなたの非アクティビティ・クラスにコンテキスト・オブジェクトを渡すことができ

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

あなたはActivityオブジェクト自体を必要としない場合

答えて

25

はい、方法があります。

+1

完全に、私はすでにviewサブクラスのコンストラクタに 'context'オブジェクトを持っていました。ありがとう。 –

+0

あなたを助けてくれてうれしいです:) –

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

'getBaseContext()'はビューのサブクラスでは動作しませんが、 'getContext()'だけで動作するようです。 –

関連する問題