web-dev-qa-db-ja.com

Android:画面解像度/ピクセルを整数値として取得します

これは私が答えを見つけられなかった本当に単純な質問です:/整数値として画面の解像度(幅、高さ)にすばやくアクセスするにはどうすればよいですか?

これを試しましたが、エミュレーターで常にゼロが表示されます。

DisplayMetrics dm = new DisplayMetrics();
int width = dm.widthPixels / 2;

私の場合、それぞれ2つの列を含むtableRowsを使用してテーブルを動的に作成したいと思います。この列はすべて、画面の幅の半分を埋める必要があります。

誰かが私にヒントを与えることができますか?

10
poeschlorn

最も簡単な方法は、 onSizeChanged を実装することです。ビューがまだ初期化されていないため、おそらく値0を取得しています。たとえば、Viewコンストラクターで上記のコードを呼び出すことはできません。

3
kgiannakakis

Trashkalmarの答えは正しいです。

ただし、結果はアクティビティコンテキストに固有のものになります。デバイス全体の画面解像度が必要な場合:

DisplayMetrics displayMetrics = new DisplayMetrics();
WindowManager wm = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE); // the results will be higher than using the activity context object or the getWindowManager() shortcut
wm.getDefaultDisplay().getMetrics(displayMetrics);
int screenWidth = displayMetrics.widthPixels;
int screenHeight = displayMetrics.heightPixels;

結果は、現在のデバイスの向きにも依存することに注意してください。

35

次の方法で画面メトリックを取得できます。

Display d = ((WindowManager)getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
int width = d.getWidth();
int height = d.getHeight();
18
trashkalmar

1.この内部アクティビティを使用して、画面の幅と高さのピクセルを取得します。

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay()
    .getMetrics(metrics);
int width = metrics.widthPixels;
int height = metrics.heightPixels;

2.これも使用できますが、Apiレベルのインラインチェックが必要です

Display display = getWindowManager().getDefaultDisplay();

Point size = new Point();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {
    display.getSize(size);
    int width2 = size.x;
    int height2 = size.y;

} else {
    int width2 = display.getWidth();
    int height2 = display.getHeight();
}

3.あなたが活動していないが文脈を持っているときにこれを使用してください

WindowManager wm = (WindowManager) context.getSystemService(
            Context.WINDOW_SERVICE);
Display display1 = wm.getDefaultDisplay();
Point size1 = new Point();

int width1;
int height1;

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {

    display1.getSize(size1);
    width1 = size1.x;
    height1 = size1.y;

} else {
    width2 = display.getWidth();
    height2 = display.getHeight();
}
5
DeepakPanwar

私は以下を使用します:

int scrWidth  = getWindowManager().getDefaultDisplay().getWidth();
int scrHeight = getWindowManager().getDefaultDisplay().getHeight();

面倒なこともなく、大騒ぎせず、2つのクラス変数だけ

4
Rich