11

Ice Cream Sandwich を備えたデバイスは、画面上のソフト キーを使用できます。これは、画面の一部がこれらのキーによって占有されることを意味します。解像度からソフトキーが占めるスペースを差し引いたものではなく、実際の画面解像度を取得する必要があります。

次のことを試しましたが、どちらも機能しません。

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth();
int height = display.getHeight();
Log.d("SCREEN RES", "Width: " + width + ". Height: " + height);

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
height = metrics.heightPixels;
width = metrics.widthPixels;
Log.d("SCREEN RES", "Width: " + width + ". Height: " + height);

出力は次のとおりです。

12-19 20:18:42.012: D/SCREEN RES(20752): Width: 1196. Height: 720
12-19 20:18:42.012: D/SCREEN RES(20752): Width: 1196. Height: 720

実際の画面解像度は、1196 x 720 ピクセルではなく、1280 x 720 ピクセルです。

何か案は?

編集

次のコードを使用して、アプリを全画面表示にしています。

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
4

2 に答える 2

9

API はアプリが使用できるピクセル数を返すため、これは正しい結果です。

于 2011-12-19T19:41:35.777 に答える
1

API レベル 17 (Android 4.2 Jelly Bean) から、次のように実際の表示サイズを取得できます。

Point size = new Point();
Display display = getWindowManager().getDefaultDisplay();
display.getRealSize(size);

size向きに基づいた表示サイズが含まれるようになりました (つまり、x は、デバイスではなく、ユーザーに対して左/右になります)。

于 2014-08-28T22:30:58.163 に答える