2

デバイスの画面サイズを取得するには、displaymetrics を使用します。スマートフォンでは問題なく動作しますが、タブレットでは画面の幅と高さの 2/3 を返します。それはなぜですか?

それがコードです:

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int screenheight = metrics.heightPixels;
int screenwidth= metrics.widthPixels;
4

2 に答える 2

1

getRealMetrics()代わりに試してください:

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getRealMetrics(metrics);

この API は API 17 で正式に追加されましたが、私の限られたテストでは 4.0 デバイスでも正しく動作していたため、それ以前は隠し API だった可能性があります。

公式ドキュメントはこちら、ただし、他の API が期待どおりに動作しない理由は、そこにあるテキストが暗示するものよりも多いようです。

この API が動作しない ICS デバイスがある場合は、ここに記載されているフォールバックを試すこともできます。

于 2014-02-05T21:36:11.580 に答える
0

密度でスケーリングしていません。

これを試して:

int screenHeight = metrics.heightPixels * getResources().getDisplayMetrics().density;
int screenWidth = metrics.widthPixels * getResources().getDisplayMetrics().density;

また

(WindowManager) context.getSystemService(Context.WINDOW_SERVICE).getDefaultDisplay().getWidth();
于 2012-04-30T10:24:56.147 に答える