make view managers native modules
Reviewed By: achen1 Differential Revision: D3973591 fbshipit-source-id: 44886f3bf045ed64585c92eb2e291627eed86c92
This commit is contained in:
Родитель
1296cb29eb
Коммит
24a83fae2f
|
@ -13,7 +13,6 @@ import javax.inject.Provider;
|
|||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import com.facebook.react.bridge.JavaScriptModule;
|
||||
|
@ -188,11 +187,6 @@ import static com.facebook.react.bridge.ReactMarkerConstants.CREATE_UI_MANAGER_M
|
|||
return jsModules;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
private UIManagerModule createUIManager(ReactApplicationContext reactContext) {
|
||||
ReactMarker.logMarker(CREATE_UI_MANAGER_MODULE_START);
|
||||
Systrace.beginSection(Systrace.TRACE_TAG_REACT_JAVA_BRIDGE, "createUIManagerModule");
|
||||
|
|
|
@ -10,11 +10,13 @@
|
|||
package com.facebook.react;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import com.facebook.react.bridge.ModuleSpec;
|
||||
import com.facebook.react.bridge.NativeModule;
|
||||
import com.facebook.react.bridge.ReactApplicationContext;
|
||||
import com.facebook.react.uimanager.ViewManager;
|
||||
import com.facebook.systrace.Systrace;
|
||||
import com.facebook.systrace.SystraceMessage;
|
||||
|
||||
|
@ -48,4 +50,26 @@ public abstract class LazyReactPackage implements ReactPackage {
|
|||
}
|
||||
return modules;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param reactContext react application context that can be used to create View Managers.
|
||||
* @return list of module specs that can create the View Managers.
|
||||
*/
|
||||
public List<ModuleSpec> getViewManagers(ReactApplicationContext reactContext) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
|
||||
List<ModuleSpec> viewManagerModuleSpecs = getViewManagers(reactContext);
|
||||
if (viewManagerModuleSpecs == null || viewManagerModuleSpecs.isEmpty()) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
List<ViewManager> viewManagers = new ArrayList<>();
|
||||
for (ModuleSpec moduleSpec : viewManagerModuleSpecs) {
|
||||
viewManagers.add((ViewManager) moduleSpec.getProvider().get());
|
||||
}
|
||||
return viewManagers;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,8 +9,9 @@ android_library(
|
|||
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/uimanager/annotations:annotations'),
|
||||
react_native_target('java/com/facebook/react/module/annotations:annotations'),
|
||||
react_native_target('java/com/facebook/react/uimanager:uimanager'),
|
||||
react_native_target('java/com/facebook/react/uimanager/annotations:annotations'),
|
||||
react_native_target('java/com/facebook/react/views/view:view'),
|
||||
],
|
||||
visibility = [
|
||||
|
|
|
@ -10,12 +10,14 @@
|
|||
package com.facebook.react.views.text;
|
||||
|
||||
import com.facebook.react.common.annotations.VisibleForTesting;
|
||||
import com.facebook.react.module.annotations.ReactModule;
|
||||
import com.facebook.react.uimanager.ThemedReactContext;
|
||||
|
||||
/**
|
||||
* Manages raw text nodes. Since they are used only as a virtual nodes any type of native view
|
||||
* operation will throw an {@link IllegalStateException}
|
||||
*/
|
||||
@ReactModule(name = ReactRawTextManager.REACT_CLASS)
|
||||
public class ReactRawTextManager extends ReactTextViewManager {
|
||||
|
||||
@VisibleForTesting
|
||||
|
|
|
@ -19,6 +19,7 @@ import android.widget.TextView;
|
|||
import com.facebook.csslayout.CSSConstants;
|
||||
import com.facebook.csslayout.Spacing;
|
||||
import com.facebook.react.bridge.JSApplicationIllegalArgumentException;
|
||||
import com.facebook.react.module.annotations.ReactModule;
|
||||
import com.facebook.react.uimanager.BaseViewManager;
|
||||
import com.facebook.react.uimanager.PixelUtil;
|
||||
import com.facebook.react.uimanager.annotations.ReactProp;
|
||||
|
@ -36,6 +37,7 @@ import com.facebook.react.uimanager.annotations.ReactPropGroup;
|
|||
* @{link ReactTextShadowNode} hierarchy to calculate a {@link Spannable} text representing the
|
||||
* whole text subtree.
|
||||
*/
|
||||
@ReactModule(name = ReactTextViewManager.REACT_CLASS)
|
||||
public class ReactTextViewManager extends BaseViewManager<ReactTextView, ReactTextShadowNode> {
|
||||
|
||||
@VisibleForTesting
|
||||
|
|
|
@ -9,9 +9,10 @@ android_library(
|
|||
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/touch:touch'),
|
||||
react_native_target('java/com/facebook/react/uimanager/annotations:annotations'),
|
||||
react_native_target('java/com/facebook/react/uimanager:uimanager'),
|
||||
react_native_target('java/com/facebook/react/uimanager/annotations:annotations'),
|
||||
],
|
||||
visibility = [
|
||||
'PUBLIC',
|
||||
|
|
|
@ -26,6 +26,7 @@ import com.facebook.react.bridge.ReadableArray;
|
|||
import com.facebook.react.bridge.ReadableMap;
|
||||
import com.facebook.react.common.MapBuilder;
|
||||
import com.facebook.react.common.annotations.VisibleForTesting;
|
||||
import com.facebook.react.module.annotations.ReactModule;
|
||||
import com.facebook.react.uimanager.*;
|
||||
import com.facebook.react.uimanager.annotations.ReactProp;
|
||||
import com.facebook.react.uimanager.annotations.ReactPropGroup;
|
||||
|
@ -33,6 +34,7 @@ import com.facebook.react.uimanager.annotations.ReactPropGroup;
|
|||
/**
|
||||
* View manager for AndroidViews (plain React Views).
|
||||
*/
|
||||
@ReactModule(name = ReactViewManager.REACT_CLASS)
|
||||
public class ReactViewManager extends ViewGroupManager<ReactViewGroup> {
|
||||
|
||||
@VisibleForTesting
|
||||
|
|
Загрузка…
Ссылка в новой задаче