mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-05-22 19:39:40 +08:00
Native Modules -> Native Extensions
Reviewed By: danzimm Differential Revision: D6887988 fbshipit-source-id: 475c05f60a2e1ddcfaa9263ab363bff8a528236a
This commit is contained in:
committed by
Facebook Github Bot
parent
06d8f96a64
commit
0c49c1f332
@@ -58,7 +58,7 @@ public class DeviceInfoModule extends BaseJavaModule implements
|
||||
HashMap<String, Object> constants = new HashMap<>();
|
||||
constants.put(
|
||||
"Dimensions",
|
||||
getDimensionsConstants());
|
||||
DisplayMetricsHolder.getDisplayMetricsMap(mFontScale));
|
||||
return constants;
|
||||
}
|
||||
|
||||
@@ -90,31 +90,6 @@ public class DeviceInfoModule extends BaseJavaModule implements
|
||||
|
||||
mReactApplicationContext
|
||||
.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;
|
||||
.emit("didUpdateDimensions", DisplayMetricsHolder.getDisplayMetricsMap(mFontScale));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,13 +2,17 @@ load("//ReactNative:DEFS", "rn_android_library", "YOGA_TARGET", "react_native_de
|
||||
|
||||
rn_android_library(
|
||||
name = "uimanager",
|
||||
srcs = glob([
|
||||
"*.java",
|
||||
"debug/*.java",
|
||||
"events/*.java",
|
||||
"layoutanimation/*.java",
|
||||
]),
|
||||
srcs = glob(
|
||||
[
|
||||
"*.java",
|
||||
"debug/*.java",
|
||||
"events/*.java",
|
||||
"layoutanimation/*.java",
|
||||
],
|
||||
excludes = ["DisplayMetricsHolder.java"],
|
||||
),
|
||||
exported_deps = [
|
||||
":DisplayMetrics",
|
||||
react_native_dep("third-party/java/jsr-305:jsr-305"),
|
||||
],
|
||||
provided_deps = [
|
||||
@@ -21,6 +25,7 @@ rn_android_library(
|
||||
],
|
||||
deps = [
|
||||
YOGA_TARGET,
|
||||
":DisplayMetrics",
|
||||
react_native_dep("java/com/facebook/systrace:systrace"),
|
||||
react_native_dep("libraries/fbcore/src/main/java/com/facebook/common/logging:logging"),
|
||||
react_native_dep("third-party/java/infer-annotations:infer-annotations"),
|
||||
@@ -38,3 +43,19 @@ rn_android_library(
|
||||
react_native_target("res:uimanager"),
|
||||
],
|
||||
)
|
||||
|
||||
rn_android_library(
|
||||
name = "DisplayMetrics",
|
||||
srcs = glob([
|
||||
"DisplayMetricsHolder.java",
|
||||
]),
|
||||
required_for_source_only_abi = True,
|
||||
visibility = [
|
||||
"PUBLIC",
|
||||
],
|
||||
deps = [
|
||||
react_native_dep("third-party/java/infer-annotations:infer-annotations"),
|
||||
react_native_dep("third-party/java/jsr-305:jsr-305"),
|
||||
react_native_target("java/com/facebook/react/bridge:bridge"),
|
||||
],
|
||||
)
|
||||
|
||||
@@ -21,6 +21,7 @@ import android.view.Display;
|
||||
import android.view.WindowManager;
|
||||
|
||||
import com.facebook.infer.annotation.Assertions;
|
||||
import com.facebook.react.bridge.WritableNativeMap;
|
||||
|
||||
/**
|
||||
* Holds an instance of the current DisplayMetrics so we don't have to thread it through all the
|
||||
@@ -104,4 +105,26 @@ public class DisplayMetricsHolder {
|
||||
public static DisplayMetrics getScreenDisplayMetrics() {
|
||||
return sScreenDisplayMetrics;
|
||||
}
|
||||
|
||||
public static WritableNativeMap getDisplayMetricsMap(double fontScale) {
|
||||
Assertions.assertNotNull(
|
||||
sWindowDisplayMetrics != null || sScreenDisplayMetrics != null,
|
||||
"DisplayMetricsHolder must be initialized with initDisplayMetricsIfNotInitialized or initDisplayMetrics");
|
||||
final WritableNativeMap result = new WritableNativeMap();
|
||||
result.putMap("windowPhysicalPixels", getPhysicalPixelsMap(sWindowDisplayMetrics, fontScale));
|
||||
result.putMap("screenPhysicalPixels", getPhysicalPixelsMap(sScreenDisplayMetrics, fontScale));
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private static WritableNativeMap getPhysicalPixelsMap(DisplayMetrics displayMetrics, double fontScale) {
|
||||
final WritableNativeMap result = new WritableNativeMap();
|
||||
result.putInt("width", displayMetrics.widthPixels);
|
||||
result.putInt("height", displayMetrics.heightPixels);
|
||||
result.putDouble("scale", displayMetrics.density);
|
||||
result.putDouble("fontScale", fontScale);
|
||||
result.putDouble("densityDpi", displayMetrics.densityDpi);
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user