Java 类com.facebook.react.uimanager.UIBlock 实例源码

项目:react-native-andorid-shadow    文件:RNReactNativeAndoridShadowModule.java   
@ReactMethod
    public void applyShadowForView(final Integer tag, final ReadableMap param) {
        Log.d(TAG,"AndroidShadowManager applyShadowForView! tag: " + tag);
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
            return;
        }
        UIManagerModule uiManager = reactContext.getNativeModule(UIManagerModule.class);
        uiManager.addUIBlock(new UIBlock() {

            @Override
            public void execute(NativeViewHierarchyManager nvhm) {
                ReactViewGroup targetView = (ReactViewGroup) nvhm.resolveView(tag);
                Log.d(TAG,"AndroidShadowManager view w = " + targetView.getWidth() + " h = " + targetView.getHeight());
//                targetView.setBackgroundColor(Color.CYAN);
                targetView.getViewTreeObserver().addOnGlobalLayoutListener(new OutlineAdjuster(targetView,param));

            }
        });
    }
项目:react-native-gesture-handler    文件:RNGestureHandlerModule.java   
private void tryInitializeHandlerForReactRootView(int ancestorViewTag) {
  UIManagerModule uiManager = getReactApplicationContext().getNativeModule(UIManagerModule.class);
  final int rootViewTag = uiManager.resolveRootTagFromReactTag(ancestorViewTag);
  if (rootViewTag < 1) {
    throw new JSApplicationIllegalArgumentException("Could find root view for a given ancestor with tag "
            + ancestorViewTag);
  }
  synchronized (mRoots) {
    for (int i = 0; i < mRoots.size(); i++) {
      RNGestureHandlerRootHelper root = mRoots.get(i);
      if (root.getRootView().getRootViewTag() == rootViewTag) {
        // we have found root helper registered for a given react root, we don't need to
        // initialize a new one then
        return;
      }
    }
  }
  synchronized (mEnqueuedRootViewInit) {
    if (mEnqueuedRootViewInit.contains(rootViewTag)) {
      // root view initialization already enqueued -> we skip
      return;
    }
    mEnqueuedRootViewInit.add(rootViewTag);
  }
  // root helper for a given root tag has not been found, we may wat to check if the root view is
  // an instance of RNGestureHandlerEnabledRootView and then initialize gesture handler with it
  uiManager.addUIBlock(new UIBlock() {
    @Override
    public void execute(NativeViewHierarchyManager nativeViewHierarchyManager) {
      View view = nativeViewHierarchyManager.resolveView(rootViewTag);
      if (view instanceof RNGestureHandlerEnabledRootView) {
        ((RNGestureHandlerEnabledRootView) view).initialize();
      } else {
        // Seems like the root view is something else than RNGestureHandlerEnabledRootView, this
        // is fine though as long as gestureHandlerRootHOC is used in JS
        // FIXME: check and warn about gestureHandlerRootHOC
      }
      synchronized (mEnqueuedRootViewInit) {
        mEnqueuedRootViewInit.remove(new Integer(rootViewTag));
      }
    }
  });
}