|
15 | 15 | import java.util.List; |
16 | 16 | import java.util.Map; |
17 | 17 |
|
| 18 | +import android.content.Context; |
| 19 | +import android.os.Build; |
18 | 20 | import android.util.DisplayMetrics; |
| 21 | +import android.view.Display; |
| 22 | +import android.view.WindowManager; |
19 | 23 |
|
| 24 | +import com.facebook.common.logging.FLog; |
20 | 25 | import com.facebook.csslayout.CSSLayoutContext; |
21 | 26 | import com.facebook.infer.annotation.Assertions; |
22 | 27 | import com.facebook.react.animation.Animation; |
|
30 | 35 | import com.facebook.react.bridge.ReadableArray; |
31 | 36 | import com.facebook.react.bridge.ReadableMap; |
32 | 37 | import com.facebook.react.bridge.WritableArray; |
| 38 | +import com.facebook.react.common.ReactConstants; |
33 | 39 | import com.facebook.react.uimanager.debug.NotThreadSafeViewHierarchyUpdateDebugListener; |
34 | 40 | import com.facebook.react.uimanager.events.EventDispatcher; |
35 | 41 | import com.facebook.systrace.Systrace; |
@@ -85,6 +91,21 @@ public UIManagerModule( |
85 | 91 | super(reactContext); |
86 | 92 | mEventDispatcher = new EventDispatcher(reactContext); |
87 | 93 | DisplayMetrics displayMetrics = reactContext.getResources().getDisplayMetrics(); |
| 94 | + |
| 95 | + // Get the real display metrics if we are using API level 17 or higher. |
| 96 | + // The real metrics include system decor elements (e.g. soft menu bar). |
| 97 | + // |
| 98 | + // See: http://developer.android.com/reference/android/view/Display.html#getRealMetrics(android.util.DisplayMetrics) |
| 99 | + try { |
| 100 | + if (Build.VERSION.SDK_INT >= 17) { |
| 101 | + WindowManager wm = (WindowManager)reactContext.getSystemService(Context.WINDOW_SERVICE); |
| 102 | + Display display = wm.getDefaultDisplay(); |
| 103 | + display.getRealMetrics(displayMetrics); |
| 104 | + } |
| 105 | + } catch (Exception e) { |
| 106 | + FLog.e(ReactConstants.TAG, "Error getting real display metrics: " + e.getMessage()); |
| 107 | + } |
| 108 | + |
88 | 109 | DisplayMetricsHolder.setDisplayMetrics(displayMetrics); |
89 | 110 | mModuleConstants = createConstants(displayMetrics, viewManagerList); |
90 | 111 | mUIImplementation = uiImplementation; |
|
0 commit comments