当前位置: 首页>>代码示例>>Java>>正文


Java UiThreadUtil类代码示例

本文整理汇总了Java中com.facebook.react.bridge.UiThreadUtil的典型用法代码示例。如果您正苦于以下问题:Java UiThreadUtil类的具体用法?Java UiThreadUtil怎么用?Java UiThreadUtil使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。


UiThreadUtil类属于com.facebook.react.bridge包,在下文中一共展示了UiThreadUtil类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: toJSON

import com.facebook.react.bridge.UiThreadUtil; //导入依赖的package包/类
public static JSONObject toJSON(View view) throws JSONException {
  UiThreadUtil.assertOnUiThread();

  JSONObject result = new JSONObject();
  result.put("n", view.getClass().getName());
  result.put("i", System.identityHashCode(view));
  Object tag = view.getTag();
  if (tag != null && tag instanceof String) {
    result.put("t", tag);
  }

  if (view instanceof ViewGroup) {
    ViewGroup viewGroup = (ViewGroup) view;
    if (viewGroup.getChildCount() > 0) {
      JSONArray children = new JSONArray();
      for (int i = 0; i < viewGroup.getChildCount(); i++) {
        children.put(i, toJSON(viewGroup.getChildAt(i)));
      }
      result.put("c", children);
    }
  }

  return result;
}
 
开发者ID:qq565999484,项目名称:RNLearn_Project1,代码行数:25,代码来源:ViewHierarchyDumper.java

示例2: setHidden

import com.facebook.react.bridge.UiThreadUtil; //导入依赖的package包/类
@ReactMethod
public void setHidden(final boolean hidden) {
  final Activity activity = getCurrentActivity();
  if (activity == null) {
    FLog.w(ReactConstants.TAG, "StatusBarModule: Ignored status bar change, current activity is null.");
    return;
  }
  UiThreadUtil.runOnUiThread(
    new Runnable() {
      @Override
      public void run() {
        if (hidden) {
          activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
          activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
        } else {
          activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
          activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
        }
      }
    });
}
 
开发者ID:qq565999484,项目名称:RNLearn_Project1,代码行数:22,代码来源:StatusBarModule.java

示例3: setStyle

import com.facebook.react.bridge.UiThreadUtil; //导入依赖的package包/类
@ReactMethod
public void setStyle(final String style) {
  final Activity activity = getCurrentActivity();
  if (activity == null) {
    FLog.w(ReactConstants.TAG, "StatusBarModule: Ignored status bar change, current activity is null.");
    return;
  }

  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    UiThreadUtil.runOnUiThread(
      new Runnable() {
        @TargetApi(Build.VERSION_CODES.M)
        @Override
        public void run() {
          View decorView = activity.getWindow().getDecorView();
          decorView.setSystemUiVisibility(
            style.equals("dark-content") ? View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR : 0);
        }
      }
    );
  }
}
 
开发者ID:qq565999484,项目名称:RNLearn_Project1,代码行数:23,代码来源:StatusBarModule.java

示例4: doFrame

import com.facebook.react.bridge.UiThreadUtil; //导入依赖的package包/类
@Override
public void doFrame(long frameTimeNanos) {
  UiThreadUtil.assertOnUiThread();

  if (mShouldStop) {
    mIsPosted = false;
  } else {
    post();
  }

  Systrace.beginSection(Systrace.TRACE_TAG_REACT_JAVA_BRIDGE, "ScheduleDispatchFrameCallback");
  try {
    moveStagedEventsToDispatchQueue();

    if (mEventsToDispatchSize > 0 && !mHasDispatchScheduled) {
      mHasDispatchScheduled = true;
      Systrace.startAsyncFlow(
          Systrace.TRACE_TAG_REACT_JAVA_BRIDGE,
          "ScheduleDispatchFrameCallback",
          mHasDispatchScheduledCount);
      mReactContext.runOnJSQueueThread(mDispatchEventsRunnable);
    }
  } finally {
    Systrace.endSection(Systrace.TRACE_TAG_REACT_JAVA_BRIDGE);
  }
}
 
开发者ID:qq565999484,项目名称:RNLearn_Project1,代码行数:27,代码来源:EventDispatcher.java

示例5: createForMainThread

import com.facebook.react.bridge.UiThreadUtil; //导入依赖的package包/类
/**
 * @return a MessageQueueThreadImpl corresponding to Android's main UI thread.
 */
private static MessageQueueThreadImpl createForMainThread(
    String name,
    QueueThreadExceptionHandler exceptionHandler) {
  Looper mainLooper = Looper.getMainLooper();
  final MessageQueueThreadImpl mqt =
      new MessageQueueThreadImpl(name, mainLooper, exceptionHandler);

  if (UiThreadUtil.isOnUiThread()) {
    Process.setThreadPriority(Process.THREAD_PRIORITY_DISPLAY);
    MessageQueueThreadRegistry.register(mqt);
  } else {
    UiThreadUtil.runOnUiThread(
        new Runnable() {
          @Override
          public void run() {
            Process.setThreadPriority(Process.THREAD_PRIORITY_DISPLAY);
            MessageQueueThreadRegistry.register(mqt);
          }
        });
  }
  return mqt;
}
 
开发者ID:qq565999484,项目名称:RNLearn_Project1,代码行数:26,代码来源:MessageQueueThreadImpl.java

示例6: onMeasure

import com.facebook.react.bridge.UiThreadUtil; //导入依赖的package包/类
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
  setMeasuredDimension(
      MeasureSpec.getSize(widthMeasureSpec),
      MeasureSpec.getSize(heightMeasureSpec));

  mWasMeasured = true;
  // Check if we were waiting for onMeasure to attach the root view
  if (mReactInstanceManager != null && !mIsAttachedToInstance) {
    // Enqueue it to UIThread not to block onMeasure waiting for the catalyst instance creation
    UiThreadUtil.runOnUiThread(new Runnable() {
      @Override
      public void run() {
        attachToReactInstanceManager();
      }
    });
  }
}
 
开发者ID:qq565999484,项目名称:RNLearn_Project1,代码行数:19,代码来源:ReactRootView.java

示例7: handleReloadJS

import com.facebook.react.bridge.UiThreadUtil; //导入依赖的package包/类
@Override
public void handleReloadJS() {
  UiThreadUtil.assertOnUiThread();

  // dismiss redbox if exists
  if (mRedBoxDialog != null) {
    mRedBoxDialog.dismiss();
  }

  if (mDevSettings.isRemoteJSDebugEnabled()) {
    mDevLoadingViewController.showForRemoteJSEnabled();
    mDevLoadingViewVisible = true;
    reloadJSInProxyMode();
  } else {
    String bundleURL =
      mDevServerHelper.getDevServerBundleURL(Assertions.assertNotNull(mJSAppBundleName));
    reloadJSFromServer(bundleURL);
  }
}
 
开发者ID:qq565999484,项目名称:RNLearn_Project1,代码行数:20,代码来源:DevSupportManagerImpl.java

示例8: measureInWindow

import com.facebook.react.bridge.UiThreadUtil; //导入依赖的package包/类
/**
 * Returns the coordinates of a view relative to the window (not just the RootView
 * which is what measure will return)
 *
 * @param tag - the tag for the view
 * @param outputBuffer - output buffer that contains [x,y,width,height] of the view in coordinates
 *  relative to the device window
 */
public void measureInWindow(int tag, int[] outputBuffer) {
  UiThreadUtil.assertOnUiThread();
  View v = mTagsToViews.get(tag);
  if (v == null) {
    throw new NoSuchNativeViewException("No native view for " + tag + " currently exists");
  }

  v.getLocationOnScreen(outputBuffer);

  // We need to remove the status bar from the height.  getLocationOnScreen will include the
  // status bar.
  Resources resources = v.getContext().getResources();
  int statusBarId = resources.getIdentifier("status_bar_height", "dimen", "android");
  if (statusBarId > 0) {
    int height = (int) resources.getDimension(statusBarId);
    outputBuffer[1] -= height;
  }

  // outputBuffer[0,1] already contain what we want
  outputBuffer[2] = v.getWidth();
  outputBuffer[3] = v.getHeight();
}
 
开发者ID:qq565999484,项目名称:RNLearn_Project1,代码行数:31,代码来源:NativeViewHierarchyManager.java

示例9: updateProgress

import com.facebook.react.bridge.UiThreadUtil; //导入依赖的package包/类
public void updateProgress(final @Nullable String status, final @Nullable Integer done, final @Nullable Integer total) {
  if (!sEnabled) {
    return;
  }

  UiThreadUtil.runOnUiThread(new Runnable() {
    @Override
    public void run() {
      StringBuilder message = new StringBuilder();
      message.append(status != null ? status : "Loading");
      if (done != null && total != null && total > 0) {
        message.append(String.format(Locale.getDefault(), " %.1f%% (%d/%d)", (float) done / total * 100, done, total));
      }
      message.append("\u2026"); // `...` character

      mDevLoadingView.setText(message);
    }
  });
}
 
开发者ID:qq565999484,项目名称:RNLearn_Project1,代码行数:20,代码来源:DevLoadingViewController.java

示例10: onEventDispatch

import com.facebook.react.bridge.UiThreadUtil; //导入依赖的package包/类
@Override
public void onEventDispatch(Event event) {
  // Only support events dispatched from the UI thread.
  if (!UiThreadUtil.isOnUiThread()) {
    return;
  }

  if (!mEventDrivers.isEmpty()) {
    // If the event has a different name in native convert it to it's JS name.
    String eventName = event.getEventName();
    Map<String, String> customEventType = mCustomEventTypes.get(eventName);
    if (customEventType != null) {
      eventName = customEventType.get("registrationName");
    }

    List<EventAnimationDriver> driversForKey = mEventDrivers.get(event.getViewTag() + eventName);
    if (driversForKey != null) {
      for (EventAnimationDriver driver : driversForKey) {
        event.dispatch(driver);
        mRunUpdateNodeList.add(driver.mValueNode);
      }
      updateNodes(mRunUpdateNodeList);
      mRunUpdateNodeList.clear();
    }
  }
}
 
开发者ID:qq565999484,项目名称:RNLearn_Project1,代码行数:27,代码来源:NativeAnimatedNodesManager.java

示例11: dropView

import com.facebook.react.bridge.UiThreadUtil; //导入依赖的package包/类
/**
 * Releases all references to given native View.
 */
protected void dropView(View view) {
  UiThreadUtil.assertOnUiThread();
  if (!mRootTags.get(view.getId())) {
    // For non-root views we notify viewmanager with {@link ViewManager#onDropInstance}
    resolveViewManager(view.getId()).onDropViewInstance(view);
  }
  ViewManager viewManager = mTagsToViewManagers.get(view.getId());
  if (view instanceof ViewGroup && viewManager instanceof ViewGroupManager) {
    ViewGroup viewGroup = (ViewGroup) view;
    ViewGroupManager viewGroupManager = (ViewGroupManager) viewManager;
    for (int i = viewGroupManager.getChildCount(viewGroup) - 1; i >= 0; i--) {
      View child = viewGroupManager.getChildAt(viewGroup, i);
      if (mTagsToViews.get(child.getId()) != null) {
        dropView(child);
      }
    }
    viewGroupManager.removeAllViews(viewGroup);
  }
  mTagsToViews.remove(view.getId());
  mTagsToViewManagers.remove(view.getId());
}
 
开发者ID:qq565999484,项目名称:RNLearn_Project1,代码行数:25,代码来源:NativeViewHierarchyManager.java

示例12: measure

import com.facebook.react.bridge.UiThreadUtil; //导入依赖的package包/类
/**
 * Returns true on success, false on failure. If successful, after calling, output buffer will be
 * {x, y, width, height}.
 */
public void measure(int tag, int[] outputBuffer) {
  UiThreadUtil.assertOnUiThread();
  View v = mTagsToViews.get(tag);
  if (v == null) {
    throw new NoSuchNativeViewException("No native view for " + tag + " currently exists");
  }

  View rootView = (View) RootViewUtil.getRootView(v);
  // It is possible that the RootView can't be found because this view is no longer on the screen
  // and has been removed by clipping
  if (rootView == null) {
    throw new NoSuchNativeViewException("Native view " + tag + " is no longer on screen");
  }
  rootView.getLocationInWindow(outputBuffer);
  int rootX = outputBuffer[0];
  int rootY = outputBuffer[1];

  v.getLocationInWindow(outputBuffer);

  outputBuffer[0] = outputBuffer[0] - rootX;
  outputBuffer[1] = outputBuffer[1] - rootY;
  outputBuffer[2] = v.getWidth();
  outputBuffer[3] = v.getHeight();
}
 
开发者ID:qq565999484,项目名称:RNLearn_Project1,代码行数:29,代码来源:NativeViewHierarchyManager.java

示例13: showPopupMenu

import com.facebook.react.bridge.UiThreadUtil; //导入依赖的package包/类
/**
 * Show a {@link PopupMenu}.
 *
 * @param reactTag the tag of the anchor view (the PopupMenu is displayed next to this view); this
 *        needs to be the tag of a native view (shadow views can not be anchors)
 * @param items the menu items as an array of strings
 * @param success will be called with the position of the selected item as the first argument, or
 *        no arguments if the menu is dismissed
 */
public void showPopupMenu(int reactTag, ReadableArray items, Callback success) {
  UiThreadUtil.assertOnUiThread();
  View anchor = mTagsToViews.get(reactTag);
  if (anchor == null) {
    throw new JSApplicationIllegalArgumentException("Could not find view with tag " + reactTag);
  }
  PopupMenu popupMenu = new PopupMenu(getReactContextForView(reactTag), anchor);

  Menu menu = popupMenu.getMenu();
  for (int i = 0; i < items.size(); i++) {
    menu.add(Menu.NONE, Menu.NONE, i, items.getString(i));
  }

  PopupMenuCallbackHandler handler = new PopupMenuCallbackHandler(success);
  popupMenu.setOnMenuItemClickListener(handler);
  popupMenu.setOnDismissListener(handler);

  popupMenu.show();
}
 
开发者ID:qq565999484,项目名称:RNLearn_Project1,代码行数:29,代码来源:NativeViewHierarchyManager.java

示例14: applyLayoutUpdate

import com.facebook.react.bridge.UiThreadUtil; //导入依赖的package包/类
/**
 * Update layout of given view, via immediate update or animation depending on the current batch
 * layout animation configuration supplied during initialization. Handles create and update
 * animations.
 *
 * @param view the view to update layout of
 * @param x the new X position for the view
 * @param y the new Y position for the view
 * @param width the new width value for the view
 * @param height the new height value for the view
 */
public void applyLayoutUpdate(View view, int x, int y, int width, int height) {
  UiThreadUtil.assertOnUiThread();

  // Determine which animation to use : if view is initially invisible, use create animation,
  // otherwise use update animation. This approach is easier than maintaining a list of tags
  // for recently created views.
  AbstractLayoutAnimation layoutAnimation = (view.getWidth() == 0 || view.getHeight() == 0) ?
      mLayoutCreateAnimation :
      mLayoutUpdateAnimation;

  Animation animation = layoutAnimation.createAnimation(view, x, y, width, height);
  if (animation == null || !(animation instanceof HandleLayout)) {
    view.layout(x, y, x + width, y + height);
  }
  if (animation != null) {
    view.startAnimation(animation);
  }
}
 
开发者ID:qq565999484,项目名称:RNLearn_Project1,代码行数:30,代码来源:LayoutAnimationController.java

示例15: findTargetTagAndCoordinatesForTouch

import com.facebook.react.bridge.UiThreadUtil; //导入依赖的package包/类
/**
 * Find touch event target view within the provided container given the coordinates provided
 * via {@link MotionEvent}.
 *
 * @param eventX the X screen coordinate of the touch location
 * @param eventY the Y screen coordinate of the touch location
 * @param viewGroup the container view to traverse
 * @param viewCoords an out parameter that will return the X,Y value in the target view
 * @param nativeViewTag an out parameter that will return the native view id
 * @return the react tag ID of the child view that should handle the event
 */
public static int findTargetTagAndCoordinatesForTouch(
    float eventX,
    float eventY,
    ViewGroup viewGroup,
    float[] viewCoords,
    @Nullable int[] nativeViewTag) {
  UiThreadUtil.assertOnUiThread();
  int targetTag = viewGroup.getId();
  // Store eventCoords in array so that they are modified to be relative to the targetView found.
  viewCoords[0] = eventX;
  viewCoords[1] = eventY;
  View nativeTargetView = findTouchTargetView(viewCoords, viewGroup);
  if (nativeTargetView != null) {
    View reactTargetView = findClosestReactAncestor(nativeTargetView);
    if (reactTargetView != null) {
      if (nativeViewTag != null) {
        nativeViewTag[0] = reactTargetView.getId();
      }
      targetTag = getTouchTargetForView(reactTargetView, viewCoords[0], viewCoords[1]);
    }
  }
  return targetTag;
}
 
开发者ID:qq565999484,项目名称:RNLearn_Project1,代码行数:35,代码来源:TouchTargetHelper.java


注:本文中的com.facebook.react.bridge.UiThreadUtil类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。