com.facebook.react.bridge.JavaScriptExecutorFactory#com.facebook.react.uimanager.DisplayMetricsHolder源码实例Demo

下面列出了com.facebook.react.bridge.JavaScriptExecutorFactory#com.facebook.react.uimanager.DisplayMetricsHolder 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: react-native-GPay   文件: FabricUIManager.java
public FabricUIManager(
    ReactApplicationContext reactContext,
    ViewManagerRegistry viewManagerRegistry,
    JavaScriptContextHolder jsContext,
    EventDispatcher eventDispatcher) {
  DisplayMetricsHolder.initDisplayMetricsIfNotInitialized(reactContext);
  mReactApplicationContext = reactContext;
  mViewManagerRegistry = viewManagerRegistry;
  mNativeViewHierarchyManager = new NativeViewHierarchyManager(viewManagerRegistry);
  mUIViewOperationQueue =
      new UIViewOperationQueue(
          reactContext, mNativeViewHierarchyManager, 0);
  mFabricReconciler = new FabricReconciler(mUIViewOperationQueue);
  mFabricEventEmitter =
    new FabricEventEmitter(mReactApplicationContext, this);
  mEventDispatcher = eventDispatcher;
  mJSContext = jsContext;
}
 
源代码2 项目: react-native-GPay   文件: ReactRootView.java
private void checkForKeyboardEvents() {
  getRootView().getWindowVisibleDisplayFrame(mVisibleViewArea);
  final int heightDiff =
    DisplayMetricsHolder.getWindowDisplayMetrics().heightPixels - mVisibleViewArea.bottom;
  if (mKeyboardHeight != heightDiff && heightDiff > mMinKeyboardHeightDetected) {
    // keyboard is now showing, or the keyboard height has changed
    mKeyboardHeight = heightDiff;
    WritableMap params = Arguments.createMap();
    WritableMap coordinates = Arguments.createMap();
    coordinates.putDouble("screenY", PixelUtil.toDIPFromPixel(mVisibleViewArea.bottom));
    coordinates.putDouble("screenX", PixelUtil.toDIPFromPixel(mVisibleViewArea.left));
    coordinates.putDouble("width", PixelUtil.toDIPFromPixel(mVisibleViewArea.width()));
    coordinates.putDouble("height", PixelUtil.toDIPFromPixel(mKeyboardHeight));
    params.putMap("endCoordinates", coordinates);
    sendEvent("keyboardDidShow", params);
  } else if (mKeyboardHeight != 0 && heightDiff <= mMinKeyboardHeightDetected) {
    // keyboard is now hidden
    mKeyboardHeight = 0;
    sendEvent("keyboardDidHide", null);
  }
}
 
@ReactProp(name = "snapToOffsets")
public void setSnapToOffsets(ReactHorizontalScrollView view, @Nullable ReadableArray snapToOffsets) {
  DisplayMetrics screenDisplayMetrics = DisplayMetricsHolder.getScreenDisplayMetrics();
  List<Integer> offsets = new ArrayList<Integer>();
  for (int i = 0; i < snapToOffsets.size(); i++) {
    offsets.add((int) (snapToOffsets.getDouble(i) * screenDisplayMetrics.density));
  }
  view.setSnapOffsets(offsets);
}
 
@ReactProp(name = "snapToOffsets")
public void setSnapToOffsets(ReactScrollView view, @Nullable ReadableArray snapToOffsets) {
  DisplayMetrics screenDisplayMetrics = DisplayMetricsHolder.getScreenDisplayMetrics();
  List<Integer> offsets = new ArrayList<Integer>();
  for (int i = 0; i < snapToOffsets.size(); i++) {
    offsets.add((int) (snapToOffsets.getDouble(i) * screenDisplayMetrics.density));
  }
  view.setSnapOffsets(offsets);
}
 
源代码5 项目: react-native-GPay   文件: DeviceInfoModule.java
@Override
public @Nullable Map<String, Object> getConstants() {
  HashMap<String, Object> constants = new HashMap<>();
  constants.put(
      "Dimensions",
      DisplayMetricsHolder.getDisplayMetricsMap(mFontScale));
  return constants;
}
 
源代码6 项目: react-native-GPay   文件: DeviceInfoModule.java
public void emitUpdateDimensionsEvent() {
  if (mReactApplicationContext == null) {
    return;
  }

  mReactApplicationContext
      .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
      .emit("didUpdateDimensions", DisplayMetricsHolder.getDisplayMetricsNativeMap(mFontScale));
}
 
源代码7 项目: react-native-GPay   文件: ReactRootView.java
private void checkForDeviceDimensionsChanges() {
  // Get current display metrics.
  DisplayMetricsHolder.initDisplayMetrics(getContext());
  // Check changes to both window and screen display metrics since they may not update at the same time.
  if (!areMetricsEqual(mWindowMetrics, DisplayMetricsHolder.getWindowDisplayMetrics()) ||
    !areMetricsEqual(mScreenMetrics, DisplayMetricsHolder.getScreenDisplayMetrics())) {
    mWindowMetrics.setTo(DisplayMetricsHolder.getWindowDisplayMetrics());
    mScreenMetrics.setTo(DisplayMetricsHolder.getScreenDisplayMetrics());
    emitUpdateDimensionsEvent();
  }
}
 
@Before
public void setup() {
  mContext = new ReactApplicationContext(RuntimeEnvironment.application);
  mCatalystInstanceMock = ReactTestHelper.createMockCatalystInstance();
  mContext.initializeWithInstance(mCatalystInstanceMock);
  mThemedContext = new ThemedReactContext(mContext, mContext);
  mManager = new ReactTextInputManager();
  DisplayMetricsHolder.setWindowDisplayMetrics(new DisplayMetrics());
}
 
@Before
public void setup() {
  SoLoader.setInTestMode();
  mContext = new ReactApplicationContext(RuntimeEnvironment.application);
  mCatalystInstanceMock = ReactTestHelper.createMockCatalystInstance();
  mContext.initializeWithInstance(mCatalystInstanceMock);
  mThemeContext = new ThemedReactContext(mContext, mContext);
  Fresco.initialize(mContext);
  DisplayMetricsHolder.setWindowDisplayMetrics(new DisplayMetrics());
}
 
源代码10 项目: art   文件: ARTVirtualNode.java
public ARTVirtualNode() {
  mScale = DisplayMetricsHolder.getWindowDisplayMetrics().density;
}
 
源代码11 项目: react-native-text-size   文件: RNTextSizeModule.java
/**
 * Retuns the current density.
 */
@SuppressWarnings("deprecation")
private float getCurrentDensity() {
    return DisplayMetricsHolder.getWindowDisplayMetrics().density;
}
 
源代码12 项目: react-native-GPay   文件: ARTVirtualNode.java
public ARTVirtualNode() {
  mScale = DisplayMetricsHolder.getWindowDisplayMetrics().density;
}
 
@ReactProp(name = "snapToInterval")
public void setSnapToInterval(ReactHorizontalScrollView view, float snapToInterval) {
  // snapToInterval needs to be exposed as a float because of the Javascript interface.
  DisplayMetrics screenDisplayMetrics = DisplayMetricsHolder.getScreenDisplayMetrics();
  view.setSnapInterval((int) (snapToInterval * screenDisplayMetrics.density));
}
 
源代码14 项目: react-native-GPay   文件: ReactScrollViewManager.java
@ReactProp(name = "snapToInterval")
public void setSnapToInterval(ReactScrollView view, float snapToInterval) {
  // snapToInterval needs to be exposed as a float because of the Javascript interface.
  DisplayMetrics screenDisplayMetrics = DisplayMetricsHolder.getScreenDisplayMetrics();
  view.setSnapInterval((int) (snapToInterval * screenDisplayMetrics.density));
}
 
源代码15 项目: react-native-GPay   文件: DeviceInfoModule.java
public DeviceInfoModule(Context context) {
  mReactApplicationContext = null;
  DisplayMetricsHolder.initDisplayMetricsIfNotInitialized(context);
  mFontScale = context.getResources().getConfiguration().fontScale;
}
 
源代码16 项目: react-native-GPay   文件: ReactInstanceManager.java
ReactInstanceManager(
  Context applicationContext,
  @Nullable Activity currentActivity,
  @Nullable DefaultHardwareBackBtnHandler defaultHardwareBackBtnHandler,
  JavaScriptExecutorFactory javaScriptExecutorFactory,
  @Nullable JSBundleLoader bundleLoader,
  @Nullable String jsMainModulePath,
  List<ReactPackage> packages,
  boolean useDeveloperSupport,
  @Nullable NotThreadSafeBridgeIdleDebugListener bridgeIdleDebugListener,
  LifecycleState initialLifecycleState,
  @Nullable UIImplementationProvider mUIImplementationProvider,
  NativeModuleCallExceptionHandler nativeModuleCallExceptionHandler,
  @Nullable RedBoxHandler redBoxHandler,
  boolean lazyViewManagersEnabled,
  @Nullable DevBundleDownloadListener devBundleDownloadListener,
  int minNumShakes,
  int minTimeLeftInFrameForNonBatchedOperationMs,
  @Nullable JSIModulePackage jsiModulePackage,
  @Nullable Map<String, RequestHandler> customPackagerCommandHandlers) {
  Log.d(ReactConstants.TAG, "ReactInstanceManager.ctor()");
  initializeSoLoaderIfNecessary(applicationContext);

  DisplayMetricsHolder.initDisplayMetricsIfNotInitialized(applicationContext);

  mApplicationContext = applicationContext;
  mCurrentActivity = currentActivity;
  mDefaultBackButtonImpl = defaultHardwareBackBtnHandler;
  mJavaScriptExecutorFactory = javaScriptExecutorFactory;
  mBundleLoader = bundleLoader;
  mJSMainModulePath = jsMainModulePath;
  mPackages = new ArrayList<>();
  mUseDeveloperSupport = useDeveloperSupport;
  mDevSupportManager =
      DevSupportManagerFactory.create(
          applicationContext,
          createDevHelperInterface(),
          mJSMainModulePath,
          useDeveloperSupport,
          redBoxHandler,
          devBundleDownloadListener,
          minNumShakes,
          customPackagerCommandHandlers);
  mBridgeIdleDebugListener = bridgeIdleDebugListener;
  mLifecycleState = initialLifecycleState;
  mMemoryPressureRouter = new MemoryPressureRouter(applicationContext);
  mNativeModuleCallExceptionHandler = nativeModuleCallExceptionHandler;
  synchronized (mPackages) {
    PrinterHolder.getPrinter()
        .logMessage(ReactDebugOverlayTags.RN_CORE, "RNCore: Use Split Packages");
    mPackages.add(
        new CoreModulesPackage(
            this,
            new DefaultHardwareBackBtnHandler() {
              @Override
              public void invokeDefaultOnBackPressed() {
                ReactInstanceManager.this.invokeDefaultOnBackPressed();
              }
            },
            mUIImplementationProvider,
            lazyViewManagersEnabled,
            minTimeLeftInFrameForNonBatchedOperationMs));
    if (mUseDeveloperSupport) {
      mPackages.add(new DebugCorePackage());
    }
    mPackages.addAll(packages);
  }
  mJSIModulePackage = jsiModulePackage;

  // Instantiate ReactChoreographer in UI thread.
  ReactChoreographer.initialize();
  if (mUseDeveloperSupport) {
    mDevSupportManager.startInspector();
  }
}
 
源代码17 项目: react-native-GPay   文件: ReactRootView.java
CustomGlobalLayoutListener() {
  DisplayMetricsHolder.initDisplayMetricsIfNotInitialized(getContext().getApplicationContext());
  mVisibleViewArea = new Rect();
  mMinKeyboardHeightDetected = (int) PixelUtil.toPixelFromDIP(60);
}
 
源代码18 项目: react-native-GPay   文件: ReactImagePropertyTest.java
@After
public void teardown() {
  DisplayMetricsHolder.setWindowDisplayMetrics(null);
}