mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-04-03 09:35:11 +08:00
Introduce DeviceInfo as a new native module
Summary: The `UIManager` already has a lot of responsibilities and is deeply tied with React Native's view architecture. This diff separates out a `DeviceInfo` native module to provide information about screen dimensions and font scale, etc. Reviewed By: fkgozali Differential Revision: D4713834 fbshipit-source-id: f2ee93acf876a4221c29a8c731f5abeffbb97974
This commit is contained in:
committed by
Facebook Github Bot
parent
238fd4ad19
commit
95c1926193
@@ -15,6 +15,7 @@ deps = [
|
||||
react_native_target("java/com/facebook/react/modules/datepicker:datepicker"),
|
||||
react_native_target("java/com/facebook/react/modules/share:share"),
|
||||
react_native_target("java/com/facebook/react/modules/systeminfo:systeminfo"),
|
||||
react_native_target("java/com/facebook/react/modules/deviceinfo:deviceinfo"),
|
||||
react_native_target("java/com/facebook/react/modules/timepicker:timepicker"),
|
||||
react_native_target("java/com/facebook/react/touch:touch"),
|
||||
react_native_target("java/com/facebook/react/uimanager:uimanager"),
|
||||
|
||||
@@ -31,6 +31,7 @@ import com.facebook.react.bridge.UnexpectedNativeTypeException;
|
||||
import com.facebook.react.bridge.WritableMap;
|
||||
import com.facebook.react.bridge.WritableNativeMap;
|
||||
import com.facebook.react.modules.appstate.AppStateModule;
|
||||
import com.facebook.react.modules.deviceinfo.DeviceInfoModule;
|
||||
import com.facebook.react.modules.systeminfo.AndroidInfoModule;
|
||||
import com.facebook.react.testing.FakeWebSocketModule;
|
||||
import com.facebook.react.testing.ReactIntegrationTestCase;
|
||||
@@ -101,6 +102,7 @@ public class CatalystNativeJSToJavaParametersTestCase extends ReactIntegrationTe
|
||||
mCatalystInstance = ReactTestHelper.catalystInstanceBuilder(this)
|
||||
.addNativeModule(mRecordingTestModule)
|
||||
.addNativeModule(new AndroidInfoModule())
|
||||
.addNativeModule(new DeviceInfoModule(getContext()))
|
||||
.addNativeModule(new AppStateModule(getContext()))
|
||||
.addNativeModule(new FakeWebSocketModule())
|
||||
.addNativeModule(mUIManager)
|
||||
|
||||
@@ -20,6 +20,7 @@ import com.facebook.react.bridge.WritableMap;
|
||||
import com.facebook.react.bridge.WritableNativeArray;
|
||||
import com.facebook.react.bridge.WritableNativeMap;
|
||||
import com.facebook.react.modules.appstate.AppStateModule;
|
||||
import com.facebook.react.modules.deviceinfo.DeviceInfoModule;
|
||||
import com.facebook.react.testing.AssertModule;
|
||||
import com.facebook.react.testing.FakeWebSocketModule;
|
||||
import com.facebook.react.testing.ReactIntegrationTestCase;
|
||||
@@ -78,6 +79,7 @@ public class CatalystNativeJavaToJSArgumentsTestCase extends ReactIntegrationTes
|
||||
|
||||
mInstance = ReactTestHelper.catalystInstanceBuilder(this)
|
||||
.addNativeModule(mAssertModule)
|
||||
.addNativeModule(new DeviceInfoModule(getContext()))
|
||||
.addNativeModule(new AppStateModule(getContext()))
|
||||
.addNativeModule(new FakeWebSocketModule())
|
||||
.addJSModule(TestJavaToJSArgumentsModule.class)
|
||||
|
||||
@@ -19,6 +19,7 @@ import com.facebook.react.bridge.WritableMap;
|
||||
import com.facebook.react.bridge.WritableNativeArray;
|
||||
import com.facebook.react.bridge.WritableNativeMap;
|
||||
import com.facebook.react.modules.appstate.AppStateModule;
|
||||
import com.facebook.react.modules.deviceinfo.DeviceInfoModule;
|
||||
import com.facebook.react.module.annotations.ReactModule;
|
||||
import com.facebook.react.testing.AssertModule;
|
||||
import com.facebook.react.testing.FakeWebSocketModule;
|
||||
@@ -119,6 +120,7 @@ public class CatalystNativeJavaToJSReturnValuesTestCase extends ReactIntegration
|
||||
|
||||
mInstance = ReactTestHelper.catalystInstanceBuilder(this)
|
||||
.addNativeModule(mAssertModule)
|
||||
.addNativeModule(new DeviceInfoModule(getContext()))
|
||||
.addNativeModule(new AppStateModule(getContext()))
|
||||
.addNativeModule(new FakeWebSocketModule())
|
||||
.addJSModule(TestJavaToJSReturnValuesModule.class)
|
||||
|
||||
@@ -22,6 +22,7 @@ import com.facebook.react.ReactRootView;
|
||||
import com.facebook.react.bridge.JavaScriptModule;
|
||||
import com.facebook.react.bridge.UiThreadUtil;
|
||||
import com.facebook.react.modules.appstate.AppStateModule;
|
||||
import com.facebook.react.modules.deviceinfo.DeviceInfoModule;
|
||||
import com.facebook.react.modules.systeminfo.AndroidInfoModule;
|
||||
import com.facebook.react.uimanager.PixelUtil;
|
||||
import com.facebook.react.uimanager.UIImplementation;
|
||||
@@ -96,6 +97,7 @@ public class CatalystUIManagerTestCase extends ReactIntegrationTestCase {
|
||||
jsModule = ReactTestHelper.catalystInstanceBuilder(this)
|
||||
.addNativeModule(uiManager)
|
||||
.addNativeModule(new AndroidInfoModule())
|
||||
.addNativeModule(new DeviceInfoModule(getContext()))
|
||||
.addNativeModule(new AppStateModule(getContext()))
|
||||
.addNativeModule(new FakeWebSocketModule())
|
||||
.addJSModule(UIManagerTestModule.class)
|
||||
|
||||
@@ -19,6 +19,7 @@ import com.facebook.react.bridge.CatalystInstance;
|
||||
import com.facebook.react.bridge.JavaScriptModule;
|
||||
import com.facebook.react.bridge.UiThreadUtil;
|
||||
import com.facebook.react.modules.appstate.AppStateModule;
|
||||
import com.facebook.react.modules.deviceinfo.DeviceInfoModule;
|
||||
import com.facebook.react.uimanager.UIImplementationProvider;
|
||||
import com.facebook.react.uimanager.UIManagerModule;
|
||||
import com.facebook.react.uimanager.ViewManager;
|
||||
@@ -62,6 +63,7 @@ public class JSLocaleTest extends ReactIntegrationTestCase {
|
||||
mInstance = ReactTestHelper.catalystInstanceBuilder(this)
|
||||
.addNativeModule(mStringRecordingModule)
|
||||
.addNativeModule(mUIManager)
|
||||
.addNativeModule(new DeviceInfoModule(getContext()))
|
||||
.addNativeModule(new AppStateModule(getContext()))
|
||||
.addNativeModule(new FakeWebSocketModule())
|
||||
.addJSModule(TestJSLocaleModule.class)
|
||||
|
||||
@@ -25,6 +25,7 @@ import com.facebook.react.bridge.CatalystInstance;
|
||||
import com.facebook.react.bridge.JavaScriptModule;
|
||||
import com.facebook.react.bridge.UiThreadUtil;
|
||||
import com.facebook.react.modules.appstate.AppStateModule;
|
||||
import com.facebook.react.modules.deviceinfo.DeviceInfoModule;
|
||||
import com.facebook.react.modules.systeminfo.AndroidInfoModule;
|
||||
import com.facebook.react.uimanager.UIImplementation;
|
||||
import com.facebook.react.uimanager.UIImplementationProvider;
|
||||
@@ -87,6 +88,7 @@ public class ProgressBarTestCase extends ReactIntegrationTestCase {
|
||||
mInstance = ReactTestHelper.catalystInstanceBuilder(this)
|
||||
.addNativeModule(mUIManager)
|
||||
.addNativeModule(new AndroidInfoModule())
|
||||
.addNativeModule(new DeviceInfoModule(getContext()))
|
||||
.addNativeModule(new AppStateModule(getContext()))
|
||||
.addNativeModule(new FakeWebSocketModule())
|
||||
.addJSModule(ProgressBarTestModule.class)
|
||||
|
||||
@@ -20,6 +20,7 @@ import com.facebook.react.bridge.CatalystInstance;
|
||||
import com.facebook.react.bridge.JavaScriptModule;
|
||||
import com.facebook.react.bridge.UiThreadUtil;
|
||||
import com.facebook.react.modules.appstate.AppStateModule;
|
||||
import com.facebook.react.modules.deviceinfo.DeviceInfoModule;
|
||||
import com.facebook.react.modules.systeminfo.AndroidInfoModule;
|
||||
import com.facebook.react.uimanager.PixelUtil;
|
||||
import com.facebook.react.uimanager.UIImplementation;
|
||||
@@ -68,6 +69,7 @@ public class ViewRenderingTestCase extends ReactIntegrationTestCase {
|
||||
mCatalystInstance = ReactTestHelper.catalystInstanceBuilder(this)
|
||||
.addNativeModule(uiManager)
|
||||
.addNativeModule(new AndroidInfoModule())
|
||||
.addNativeModule(new DeviceInfoModule(getContext()))
|
||||
.addNativeModule(new AppStateModule(getContext()))
|
||||
.addNativeModule(new FakeWebSocketModule())
|
||||
.addJSModule(ViewRenderingTestModule.class)
|
||||
|
||||
@@ -19,6 +19,7 @@ DEPS = [
|
||||
react_native_target("java/com/facebook/react/modules/core:core"),
|
||||
react_native_target("java/com/facebook/react/modules/debug:debug"),
|
||||
react_native_target("java/com/facebook/react/modules/debug:interfaces"),
|
||||
react_native_target("java/com/facebook/react/modules/deviceinfo:deviceinfo"),
|
||||
react_native_target("java/com/facebook/react/modules/systeminfo:systeminfo"),
|
||||
react_native_target("java/com/facebook/react/modules/toast:toast"),
|
||||
react_native_target("java/com/facebook/react/uimanager:uimanager"),
|
||||
|
||||
@@ -36,6 +36,7 @@ import com.facebook.react.modules.core.RCTNativeAppEventEmitter;
|
||||
import com.facebook.react.modules.core.Timing;
|
||||
import com.facebook.react.modules.debug.AnimationsDebugModule;
|
||||
import com.facebook.react.modules.debug.SourceCodeModule;
|
||||
import com.facebook.react.modules.deviceinfo.DeviceInfoModule;
|
||||
import com.facebook.react.modules.systeminfo.AndroidInfoModule;
|
||||
import com.facebook.react.modules.appregistry.AppRegistry;
|
||||
import com.facebook.react.uimanager.UIImplementationProvider;
|
||||
@@ -65,6 +66,7 @@ import static com.facebook.react.bridge.ReactMarkerConstants.PROCESS_CORE_REACT_
|
||||
SourceCodeModule.class,
|
||||
Timing.class,
|
||||
UIManagerModule.class,
|
||||
DeviceInfoModule.class,
|
||||
// Debug only
|
||||
DebugComponentOwnershipModule.class,
|
||||
JSCHeapCapture.class,
|
||||
@@ -151,6 +153,13 @@ import static com.facebook.react.bridge.ReactMarkerConstants.PROCESS_CORE_REACT_
|
||||
return createUIManager(reactContext);
|
||||
}
|
||||
}));
|
||||
moduleSpecList.add(
|
||||
new ModuleSpec(DeviceInfoModule.class, new Provider<NativeModule>() {
|
||||
@Override
|
||||
public NativeModule get() {
|
||||
return new DeviceInfoModule(reactContext);
|
||||
}
|
||||
}));
|
||||
|
||||
if (ReactBuildConfig.DEBUG) {
|
||||
moduleSpecList.add(
|
||||
|
||||
@@ -15,7 +15,6 @@ import android.content.Context;
|
||||
import android.graphics.Rect;
|
||||
import android.os.Bundle;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.Surface;
|
||||
import android.view.View;
|
||||
@@ -32,6 +31,7 @@ import com.facebook.react.bridge.WritableMap;
|
||||
import com.facebook.react.common.ReactConstants;
|
||||
import com.facebook.react.common.annotations.VisibleForTesting;
|
||||
import com.facebook.react.modules.core.DeviceEventManagerModule;
|
||||
import com.facebook.react.modules.deviceinfo.DeviceInfoModule;
|
||||
import com.facebook.react.uimanager.DisplayMetricsHolder;
|
||||
import com.facebook.react.uimanager.JSTouchDispatcher;
|
||||
import com.facebook.react.uimanager.PixelUtil;
|
||||
@@ -396,7 +396,7 @@ public class ReactRootView extends SizeMonitoringFrameLayout implements RootView
|
||||
private void emitUpdateDimensionsEvent() {
|
||||
mReactInstanceManager
|
||||
.getCurrentReactContext()
|
||||
.getNativeModule(UIManagerModule.class)
|
||||
.getNativeModule(DeviceInfoModule.class)
|
||||
.emitUpdateDimensionsEvent();
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
include_defs("//ReactAndroid/DEFS")
|
||||
|
||||
android_library(
|
||||
name = "deviceinfo",
|
||||
srcs = glob(["**/*.java"]),
|
||||
visibility = [
|
||||
"PUBLIC",
|
||||
],
|
||||
deps = [
|
||||
react_native_dep("third-party/java/jsr-305:jsr-305"),
|
||||
react_native_target("java/com/facebook/react/bridge:bridge"),
|
||||
react_native_target("java/com/facebook/react/common:common"),
|
||||
react_native_target("java/com/facebook/react/module/annotations:annotations"),
|
||||
react_native_target("java/com/facebook/react/modules/core:core"),
|
||||
react_native_target("java/com/facebook/react/uimanager:uimanager"),
|
||||
],
|
||||
)
|
||||
@@ -0,0 +1,105 @@
|
||||
/**
|
||||
* Copyright (c) 2015-present, Facebook, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* LICENSE file in the root directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the PATENTS file in the same directory.
|
||||
*/
|
||||
|
||||
package com.facebook.react.modules.deviceinfo;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import android.util.DisplayMetrics;
|
||||
|
||||
import com.facebook.react.bridge.Arguments;
|
||||
import com.facebook.react.bridge.LifecycleEventListener;
|
||||
import com.facebook.react.bridge.ReactApplicationContext;
|
||||
import com.facebook.react.bridge.ReactContextBaseJavaModule;
|
||||
import com.facebook.react.bridge.WritableMap;
|
||||
import com.facebook.react.module.annotations.ReactModule;
|
||||
import com.facebook.react.modules.core.DeviceEventManagerModule;
|
||||
import com.facebook.react.uimanager.DisplayMetricsHolder;
|
||||
|
||||
/**
|
||||
* Module that exposes Android Constants to JS.
|
||||
*/
|
||||
@ReactModule(name = "DeviceInfo")
|
||||
public class DeviceInfoModule extends ReactContextBaseJavaModule implements
|
||||
LifecycleEventListener {
|
||||
|
||||
private float mFontScale;
|
||||
|
||||
public DeviceInfoModule(
|
||||
ReactApplicationContext reactContext) {
|
||||
super(reactContext);
|
||||
|
||||
mFontScale = getReactApplicationContext().getResources().getConfiguration().fontScale;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "DeviceInfo";
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable Map<String, Object> getConstants() {
|
||||
HashMap<String, Object> constants = new HashMap<>();
|
||||
constants.put(
|
||||
"Dimensions",
|
||||
getDimensionsConstants());
|
||||
return constants;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onHostResume() {
|
||||
float fontScale = getReactApplicationContext().getResources().getConfiguration().fontScale;
|
||||
if (mFontScale != fontScale) {
|
||||
mFontScale = fontScale;
|
||||
emitUpdateDimensionsEvent();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onHostPause() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onHostDestroy() {
|
||||
}
|
||||
|
||||
public void emitUpdateDimensionsEvent() {
|
||||
getReactApplicationContext()
|
||||
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
|
||||
.emit("didUpdateDimensions", getDimensionsConstants());
|
||||
}
|
||||
|
||||
private WritableMap getDimensionsConstants() {
|
||||
DisplayMetrics windowDisplayMetrics = DisplayMetricsHolder.getWindowDisplayMetrics();
|
||||
DisplayMetrics screenDisplayMetrics = DisplayMetricsHolder.getScreenDisplayMetrics();
|
||||
|
||||
WritableMap windowDisplayMetricsMap = Arguments.createMap();
|
||||
windowDisplayMetricsMap.putInt("width", windowDisplayMetrics.widthPixels);
|
||||
windowDisplayMetricsMap.putInt("height", windowDisplayMetrics.heightPixels);
|
||||
windowDisplayMetricsMap.putDouble("scale", windowDisplayMetrics.density);
|
||||
windowDisplayMetricsMap.putDouble("fontScale", mFontScale);
|
||||
windowDisplayMetricsMap.putDouble("densityDpi", windowDisplayMetrics.densityDpi);
|
||||
|
||||
WritableMap screenDisplayMetricsMap = Arguments.createMap();
|
||||
screenDisplayMetricsMap.putInt("width", screenDisplayMetrics.widthPixels);
|
||||
screenDisplayMetricsMap.putInt("height", screenDisplayMetrics.heightPixels);
|
||||
screenDisplayMetricsMap.putDouble("scale", screenDisplayMetrics.density);
|
||||
screenDisplayMetricsMap.putDouble("fontScale", mFontScale);
|
||||
screenDisplayMetricsMap.putDouble("densityDpi", screenDisplayMetrics.densityDpi);
|
||||
|
||||
WritableMap dimensionsMap = Arguments.createMap();
|
||||
dimensionsMap.putMap("windowPhysicalPixels", windowDisplayMetricsMap);
|
||||
dimensionsMap.putMap("screenPhysicalPixels", screenDisplayMetricsMap);
|
||||
|
||||
return dimensionsMap;
|
||||
}
|
||||
}
|
||||
@@ -87,7 +87,6 @@ public class UIManagerModule extends ReactContextBaseJavaModule implements
|
||||
private final Map<String, Object> mModuleConstants;
|
||||
private final UIImplementation mUIImplementation;
|
||||
private final MemoryTrimCallback mMemoryTrimCallback = new MemoryTrimCallback();
|
||||
private float mFontScale;
|
||||
|
||||
private int mNextRootViewTag = 1;
|
||||
private int mBatchId = 0;
|
||||
@@ -100,8 +99,7 @@ public class UIManagerModule extends ReactContextBaseJavaModule implements
|
||||
super(reactContext);
|
||||
DisplayMetricsHolder.initDisplayMetricsIfNotInitialized(reactContext);
|
||||
mEventDispatcher = new EventDispatcher(reactContext);
|
||||
mFontScale = getReactApplicationContext().getResources().getConfiguration().fontScale;
|
||||
mModuleConstants = createConstants(viewManagerList, lazyViewManagersEnabled, mFontScale);
|
||||
mModuleConstants = createConstants(viewManagerList, lazyViewManagersEnabled);
|
||||
mUIImplementation = uiImplementationProvider
|
||||
.createUIImplementation(reactContext, viewManagerList, mEventDispatcher);
|
||||
|
||||
@@ -134,12 +132,6 @@ public class UIManagerModule extends ReactContextBaseJavaModule implements
|
||||
@Override
|
||||
public void onHostResume() {
|
||||
mUIImplementation.onHostResume();
|
||||
|
||||
float fontScale = getReactApplicationContext().getResources().getConfiguration().fontScale;
|
||||
if (mFontScale != fontScale) {
|
||||
mFontScale = fontScale;
|
||||
emitUpdateDimensionsEvent();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -163,15 +155,13 @@ public class UIManagerModule extends ReactContextBaseJavaModule implements
|
||||
|
||||
private static Map<String, Object> createConstants(
|
||||
List<ViewManager> viewManagerList,
|
||||
boolean lazyViewManagersEnabled,
|
||||
float fontScale) {
|
||||
boolean lazyViewManagersEnabled) {
|
||||
ReactMarker.logMarker(CREATE_UI_MANAGER_MODULE_CONSTANTS_START);
|
||||
Systrace.beginSection(Systrace.TRACE_TAG_REACT_JAVA_BRIDGE, "CreateUIManagerConstants");
|
||||
try {
|
||||
return UIManagerModuleConstantsHelper.createConstants(
|
||||
viewManagerList,
|
||||
lazyViewManagersEnabled,
|
||||
fontScale);
|
||||
lazyViewManagersEnabled);
|
||||
} finally {
|
||||
Systrace.endSection(Systrace.TRACE_TAG_REACT_JAVA_BRIDGE);
|
||||
ReactMarker.logMarker(CREATE_UI_MANAGER_MODULE_CONSTANTS_END);
|
||||
@@ -550,16 +540,6 @@ public class UIManagerModule extends ReactContextBaseJavaModule implements
|
||||
mUIImplementation.sendAccessibilityEvent(tag, eventType);
|
||||
}
|
||||
|
||||
public void emitUpdateDimensionsEvent() {
|
||||
sendEvent("didUpdateDimensions", UIManagerModuleConstants.getDimensionsConstants(mFontScale));
|
||||
}
|
||||
|
||||
private void sendEvent(String eventName, @Nullable WritableMap params) {
|
||||
getReactApplicationContext()
|
||||
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
|
||||
.emit(eventName, params);
|
||||
}
|
||||
|
||||
/**
|
||||
* Schedule a block to be executed on the UI thread. Useful if you need to execute
|
||||
* view logic after all currently queued view updates have completed.
|
||||
|
||||
@@ -83,7 +83,7 @@ import com.facebook.react.uimanager.events.TouchEventType;
|
||||
.build();
|
||||
}
|
||||
|
||||
public static Map<String, Object> getConstants(float fontScale) {
|
||||
public static Map<String, Object> getConstants() {
|
||||
HashMap<String, Object> constants = new HashMap<String, Object>();
|
||||
constants.put(
|
||||
"UIView",
|
||||
@@ -97,10 +97,6 @@ import com.facebook.react.uimanager.events.TouchEventType;
|
||||
"ScaleAspectCenter",
|
||||
ImageView.ScaleType.CENTER_INSIDE.ordinal())));
|
||||
|
||||
constants.put(
|
||||
"Dimensions",
|
||||
getDimensionsConstants(fontScale));
|
||||
|
||||
constants.put(
|
||||
"StyleConstants",
|
||||
MapBuilder.of(
|
||||
@@ -133,29 +129,4 @@ import com.facebook.react.uimanager.events.TouchEventType;
|
||||
|
||||
return constants;
|
||||
}
|
||||
|
||||
public static WritableMap getDimensionsConstants(float fontScale) {
|
||||
DisplayMetrics windowDisplayMetrics = DisplayMetricsHolder.getWindowDisplayMetrics();
|
||||
DisplayMetrics screenDisplayMetrics = DisplayMetricsHolder.getScreenDisplayMetrics();
|
||||
|
||||
WritableMap windowDisplayMetricsMap = Arguments.createMap();
|
||||
windowDisplayMetricsMap.putInt("width", windowDisplayMetrics.widthPixels);
|
||||
windowDisplayMetricsMap.putInt("height", windowDisplayMetrics.heightPixels);
|
||||
windowDisplayMetricsMap.putDouble("scale", windowDisplayMetrics.density);
|
||||
windowDisplayMetricsMap.putDouble("fontScale", fontScale);
|
||||
windowDisplayMetricsMap.putDouble("densityDpi", windowDisplayMetrics.densityDpi);
|
||||
|
||||
WritableMap screenDisplayMetricsMap = Arguments.createMap();
|
||||
screenDisplayMetricsMap.putInt("width", screenDisplayMetrics.widthPixels);
|
||||
screenDisplayMetricsMap.putInt("height", screenDisplayMetrics.heightPixels);
|
||||
screenDisplayMetricsMap.putDouble("scale", screenDisplayMetrics.density);
|
||||
screenDisplayMetricsMap.putDouble("fontScale", fontScale);
|
||||
screenDisplayMetricsMap.putDouble("densityDpi", screenDisplayMetrics.densityDpi);
|
||||
|
||||
WritableMap dimensionsMap = Arguments.createMap();
|
||||
dimensionsMap.putMap("windowPhysicalPixels", windowDisplayMetricsMap);
|
||||
dimensionsMap.putMap("screenPhysicalPixels", screenDisplayMetricsMap);
|
||||
|
||||
return dimensionsMap;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,9 +43,8 @@ import static com.facebook.systrace.Systrace.TRACE_TAG_REACT_JAVA_BRIDGE;
|
||||
*/
|
||||
/* package */ static Map<String, Object> createConstants(
|
||||
List<ViewManager> viewManagers,
|
||||
boolean lazyViewManagersEnabled,
|
||||
float fontScale) {
|
||||
Map<String, Object> constants = UIManagerModuleConstants.getConstants(fontScale);
|
||||
boolean lazyViewManagersEnabled) {
|
||||
Map<String, Object> constants = UIManagerModuleConstants.getConstants();
|
||||
Map bubblingEventTypesConstants = UIManagerModuleConstants.getBubblingEventTypeConstants();
|
||||
Map directEventTypesConstants = UIManagerModuleConstants.getDirectEventTypeConstants();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user