62

小さな問題があります。画面の幅をサーバーに送信する必要がある関数を作成しています。私はそれをすべて機能させ、私は以下を使用します:

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth();

幅を取得します。ただし、 .getWidht() 関数は非推奨であり、使用する必要があると言われています:

Point size = new Point();
display.getSize(size);

しかし、その機能は API レベル 13 以上でのみ利用でき、私の最小 SDK は 8 です。getWidth を使用しても安全ですか? 新しい機能を追加するのに、下位互換性を持たせないのはなぜですか?

4

4 に答える 4

128

このアプローチが役立つかもしれません:

DisplayMetrics displaymetrics = new DisplayMetrics();
mContext.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int screenWidth = displaymetrics.widthPixels;
int screenHeight = displaymetrics.heightPixels;
于 2013-01-28T11:24:51.487 に答える
11

実行時に API レベルを確認し、使用するものを選択できます。

final int version = android.os.Build.VERSION.SDK_INT;
final int width;
if (version >= 13)
{
    Point size = new Point();
    display.getSize(size);
    width = size.x;
}
else
{
    Display display = getWindowManager().getDefaultDisplay(); 
    width = display.getWidth();
}
于 2012-10-08T11:04:43.863 に答える
4

正確にしたい場合は、次のアプローチを使用してください。

int sdk = android.os.Build.VERSION.SDK_INT;
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB_MR2) {
    Display display = getWindowManager().getDefaultDisplay();
    int width = display.getWidth();
} else {
    Point size = new Point();
    display.getSize(size);
}
于 2012-10-08T11:06:49.390 に答える
3

非推奨のない最新のコードは次のとおりです。

コトリン

 val metrics: DisplayMetrics = this.getResources().getDisplayMetrics()
 val width = metrics.widthPixels

ジャワ

  DisplayMetrics metrics = context.getResources().getDisplayMetrics();
  int width = metrics.widthPixels;
  int height = metrics.heightPixels;
于 2021-08-24T11:59:51.300 に答える