2016-04-19 25 views
1

Android Nは分割画面を導入しているため、アプリのウィンドウサイズは元の半分になります。私はgetActivity().getWindowManager().getDefaultDisplay().getMetrics(metrics);は、もはや実際のデバイスの画面サイズを返すことがなくなったことを発見しました。分割画面モードでは、ディスプレイの高さはアプリのウィンドウの高さになるからです。実際の画面サイズを取得するために使用できる他のAPIはありますか?Android Nの後で実際の画面サイズを取得する方法は?

+1

は、なぜあなたは、実際の画面サイズをしたいですか? – ianhanniballake

+0

"あなたのアプリのウィンドウサイズはオリジナルの半分になることができます" - フリーフォームのマルチウィンドウモードをサポートするデバイスを取得すると、ウィンドウのサイズは画面の半分以下になります。 – CommonsWare

+0

@ianhanniballakeさんは、あなたのデバイスの画面サイズ(幅、高さ、対角線)、またはユーザーのデバイス画面サイズのデータ​​を収集/記録しようとしているアプリについて、あなたに知らせるユーティリティーアプリを持っていると言えます。私はアンドロイドでそれをやり直す簡単な方法があるのか​​不思議です。N –

答えて

3

Display.getRealMetrics(DisplayMetrics)実際の表示サイズが返されます。

+0

この長い間、 'getReal'で始まるコアAPIのメソッドを持つのは本当に面倒です。これをきれいにする必要があります。 – milosmns

-2

私はそれにはまったく適切な解決策を見つけることができませんでしたが、変更されたすべての解像度の濃度DPiで処理しています。ちょうどこのように:

private int getScreenDensityDPI() { 
    DisplayMetrics metrics = new DisplayMetrics(); 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { 
     getWindowManager().getDefaultDisplay().getRealMetrics(metrics); 
    } else { 
     getWindowManager().getDefaultDisplay().getMetrics(metrics); 
    } 
    return metrics.densityDpi; 
} 

private int getNumberItemsByScreenResolution() { 
    int densityDPI = getScreenDensityDPI(); 
    if (densityDPI <= 140) { 
     return 6; 
    } else if (densityDPI <= 160) { 
     return 5; 
    } else { 
     return 4; 
    } 
} 

最も低い濃度DPIは、最高のディスプレイの解像度はあなたのアンドロイドNデバイスになります。

-1

DisplayまたはDisplayMetricsを使用して、マルチウィンドウモードで実際のデバイスサイズを取得できます。

用いた表示:

private void findRealSize(Activity activity) 
{ 
    Point size = new Point(); 
    Display display = activity.getWindowManager().getDefaultDisplay(); 

    if (Build.VERSION.SDK_INT >= 17) 
     display.getRealSize(size); 
    else 
     display.getSize(size); 

    int realWidth = size.x; 
    int realHeight = size.y; 

    Log.i("LOG_TAG", "realWidth: " + realWidth + " realHeight: " + realHeight); 
} 

使用DisplayMetrics:

private void findRealSize(Activity activity) 
{ 
    DisplayMetrics displayMetrics = new DisplayMetrics(); 

    if (Build.VERSION.SDK_INT >= 17) 
    { 
     activity.getWindowManager().getDefaultDisplay().getRealMetrics(displayMetrics); 
    } 
    else 
    { 
     activity.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); 
    } 

    int realWidth = displayMetrics.widthPixels; 
    int realHeight = displayMetrics.heightPixels; 

    Log.i("LOG_TAG", "realWidth: " + realWidth + " realHeight: " + realHeight); 
} 
+0

これのどれもsasmung S7、android 7 –

関連する問題