2016-04-19 13 views
1

Da Android N einen geteilten Bildschirm einführt, kann die Fenstergröße Ihrer App halb so groß sein wie ursprünglich. Ich habe festgestellt, dass getActivity().getWindowManager().getDefaultDisplay().getMetrics(metrics); nicht mehr immer die tatsächliche Bildschirmgröße des Geräts zurückgibt, da im Split-Screen-Modus die Höhe des Displays stattdessen die Fensterhöhe der App ist. Gibt es eine andere API, die ich verwenden kann, um die tatsächliche Bildschirmgröße zu erhalten?Wie bekomme ich die tatsächliche Bildschirmgröße nach Android N?

+1

Warum wollen Sie die aktuelle Bildschirmgröße? – ianhanniballake

+0

"Die Fenstergröße Ihrer App kann halb so groß sein" - Sobald wir Geräte erhalten, die den Freiform-Multifenstermodus unterstützen, kann Ihre Fenstergröße viel weniger als die Hälfte des Bildschirms betragen. – CommonsWare

+0

@ianhanniballake sagen Sie haben eine Dienstprogramm-App, die Sie über die Bildschirmgröße Ihres Geräts (Breite, Höhe, Diagonale) oder über Apps informiert, die versuchen, die Bildschirmgrößen der Benutzer zu erfassen/zu protokollieren. Ich bin nur neugierig, ob es eine alternative einfache Möglichkeit, es mit Android zu tun N –

Antwort

-2

Bis dahin konnte ich keine passende Lösung dafür finden, aber ich handle mit der dichteDpi von jeder Auflösung, die geändert wird. Genau wie folgt aus:

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; 
    } 
} 

Während niedrigsten der densityDPI ist, am höchsten ist die Auflösung des Displays wird in Ihrem Android-N-Gerät sein.

-1

Sie können die tatsächliche Gerätegröße im Multi-Window-Modus mit Display oder DisplayMetrics erreichen.

Mit Display:

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); 
} 

Mit 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

Nichts davon funktionierte für sasmung S7, Android 7 –

Verwandte Themen