@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));
}
});
}
java类com.facebook.react.uimanager.UIManagerModule的实例源码
RNReactNativeAndoridShadowModule.java 文件源码
项目:react-native-andorid-shadow
阅读 31
收藏 0
点赞 0
评论 0
RecyclerViewBackedScrollView.java 文件源码
项目:react-native-recyclerview-list
阅读 27
收藏 0
点赞 0
评论 0
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if (super.onInterceptTouchEvent(ev)) {
NativeGestureUtil.notifyNativeGestureStarted(this, ev);
mDragging = true;
getReactContext().getNativeModule(UIManagerModule.class).getEventDispatcher()
.dispatchEvent(ScrollEvent.obtain(
getId(),
ScrollEventType.BEGIN_DRAG,
0, /* offsetX = 0, horizontal scrolling only */
computeVerticalScrollOffset(),
0, // xVelocity
0, // yVelocity
getWidth(),
computeVerticalScrollRange(),
getWidth(),
getHeight()));
return true;
}
return false;
}
RecyclerViewBackedScrollView.java 文件源码
项目:react-native-recyclerview-list
阅读 37
收藏 0
点赞 0
评论 0
@Override
public boolean onTouchEvent(MotionEvent ev) {
int action = ev.getAction() & MotionEvent.ACTION_MASK;
if (action == MotionEvent.ACTION_UP && mDragging) {
mDragging = false;
mVelocityHelper.calculateVelocity(ev);
getReactContext().getNativeModule(UIManagerModule.class).getEventDispatcher()
.dispatchEvent(ScrollEvent.obtain(
getId(),
ScrollEventType.END_DRAG,
0, /* offsetX = 0, horizontal scrolling only */
computeVerticalScrollOffset(),
mVelocityHelper.getXVelocity(),
mVelocityHelper.getYVelocity(),
getWidth(),
computeVerticalScrollRange(),
getWidth(),
getHeight()));
}
return super.onTouchEvent(ev);
}
ReactTextTest.java 文件源码
项目:RNLearn_Project1
阅读 38
收藏 0
点赞 0
评论 0
@Test
public void testTextDecorationLineLineThroughApplied() {
UIManagerModule uiManager = getUIManagerModule();
ReactRootView rootView = createText(
uiManager,
JavaOnlyMap.of(ViewProps.TEXT_DECORATION_LINE, "line-through"),
JavaOnlyMap.of(ReactTextShadowNode.PROP_TEXT, "test text"));
TextView textView = (TextView) rootView.getChildAt(0);
Spanned text = (Spanned) textView.getText();
UnderlineSpan[] underlineSpans =
text.getSpans(0, text.length(), UnderlineSpan.class);
StrikethroughSpan strikeThroughSpan =
getSingleSpan(textView, StrikethroughSpan.class);
assertThat(underlineSpans).hasSize(0);
assertThat(strikeThroughSpan instanceof StrikethroughSpan).isTrue();
}
ReactTextTest.java 文件源码
项目:RNLearn_Project1
阅读 35
收藏 0
点赞 0
评论 0
@Test
public void testFontFamilyBoldItalicStyleApplied() {
UIManagerModule uiManager = getUIManagerModule();
ReactRootView rootView = createText(
uiManager,
JavaOnlyMap.of(
ViewProps.FONT_FAMILY, "sans-serif",
ViewProps.FONT_WEIGHT, "500",
ViewProps.FONT_STYLE, "italic"),
JavaOnlyMap.of(ReactTextShadowNode.PROP_TEXT, "test text"));
CustomStyleSpan customStyleSpan =
getSingleSpan((TextView) rootView.getChildAt(0), CustomStyleSpan.class);
assertThat(customStyleSpan.getFontFamily()).isEqualTo("sans-serif");
assertThat(customStyleSpan.getStyle() & Typeface.ITALIC).isNotZero();
assertThat(customStyleSpan.getWeight() & Typeface.BOLD).isNotZero();
}
ReactModalHostView.java 文件源码
项目:RNLearn_Project1
阅读 36
收藏 0
点赞 0
评论 0
@Override
protected void onSizeChanged(final int w, final int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
if (getChildCount() > 0) {
final int viewTag = getChildAt(0).getId();
ReactContext reactContext = (ReactContext) getContext();
reactContext.runOnNativeModulesQueueThread(
new GuardedRunnable(reactContext) {
@Override
public void runGuarded() {
((ReactContext) getContext()).getNativeModule(UIManagerModule.class)
.updateNodeSize(viewTag, w, h);
}
});
}
}
ReactTextTest.java 文件源码
项目:RNLearn_Project1
阅读 38
收藏 0
点赞 0
评论 0
@Test
public void testTextDecorationLineUnderlineLineThroughApplied() {
UIManagerModule uiManager = getUIManagerModule();
ReactRootView rootView = createText(
uiManager,
JavaOnlyMap.of(ViewProps.TEXT_DECORATION_LINE, "underline line-through"),
JavaOnlyMap.of(ReactTextShadowNode.PROP_TEXT, "test text"));
UnderlineSpan underlineSpan =
getSingleSpan((TextView) rootView.getChildAt(0), UnderlineSpan.class);
StrikethroughSpan strikeThroughSpan =
getSingleSpan((TextView) rootView.getChildAt(0), StrikethroughSpan.class);
assertThat(underlineSpan instanceof UnderlineSpan).isTrue();
assertThat(strikeThroughSpan instanceof StrikethroughSpan).isTrue();
}
ReactToolbarManager.java 文件源码
项目:RNLearn_Project1
阅读 34
收藏 0
点赞 0
评论 0
@Override
protected void addEventEmitters(final ThemedReactContext reactContext, final ReactToolbar view) {
final EventDispatcher mEventDispatcher = reactContext.getNativeModule(UIManagerModule.class)
.getEventDispatcher();
view.setNavigationOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
mEventDispatcher.dispatchEvent(
new ToolbarClickEvent(view.getId(), -1));
}
});
view.setOnMenuItemClickListener(
new ReactToolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
mEventDispatcher.dispatchEvent(
new ToolbarClickEvent(
view.getId(),
menuItem.getOrder()));
return true;
}
});
}
ReactScrollViewHelper.java 文件源码
项目:RNLearn_Project1
阅读 43
收藏 0
点赞 0
评论 0
private static void emitScrollEvent(ViewGroup scrollView, ScrollEventType scrollEventType) {
View contentView = scrollView.getChildAt(0);
if (contentView == null) {
return;
}
ReactContext reactContext = (ReactContext) scrollView.getContext();
reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher().dispatchEvent(
ScrollEvent.obtain(
scrollView.getId(),
scrollEventType,
scrollView.getScrollX(),
scrollView.getScrollY(),
contentView.getWidth(),
contentView.getHeight(),
scrollView.getWidth(),
scrollView.getHeight()));
}
ReactTestHelper.java 文件源码
项目:RNLearn_Project1
阅读 30
收藏 0
点赞 0
评论 0
/**
* @return a CatalystInstance mock that has a default working ReactQueueConfiguration.
*/
public static CatalystInstance createMockCatalystInstance() {
ReactQueueConfigurationSpec spec = ReactQueueConfigurationSpec.builder()
.setJSQueueThreadSpec(MessageQueueThreadSpec.mainThreadSpec())
.setNativeModulesQueueThreadSpec(MessageQueueThreadSpec.mainThreadSpec())
.build();
ReactQueueConfiguration ReactQueueConfiguration = ReactQueueConfigurationImpl.create(
spec,
new QueueThreadExceptionHandler() {
@Override
public void handleException(Exception e) {
throw new RuntimeException(e);
}
});
CatalystInstance reactInstance = mock(CatalystInstance.class);
when(reactInstance.getReactQueueConfiguration()).thenReturn(ReactQueueConfiguration);
when(reactInstance.getNativeModule(UIManagerModule.class))
.thenReturn(mock(UIManagerModule.class));
return reactInstance;
}
ReactTextTest.java 文件源码
项目:RNLearn_Project1
阅读 28
收藏 0
点赞 0
评论 0
@Test
public void testTextDecorationLineUnderlineApplied() {
UIManagerModule uiManager = getUIManagerModule();
ReactRootView rootView = createText(
uiManager,
JavaOnlyMap.of(ViewProps.TEXT_DECORATION_LINE, "underline"),
JavaOnlyMap.of(ReactTextShadowNode.PROP_TEXT, "test text"));
TextView textView = (TextView) rootView.getChildAt(0);
Spanned text = (Spanned) textView.getText();
UnderlineSpan underlineSpan = getSingleSpan(textView, UnderlineSpan.class);
StrikethroughSpan[] strikeThroughSpans =
text.getSpans(0, text.length(), StrikethroughSpan.class);
assertThat(underlineSpan instanceof UnderlineSpan).isTrue();
assertThat(strikeThroughSpans).hasSize(0);
}
ReactTextTest.java 文件源码
项目:RNLearn_Project1
阅读 34
收藏 0
点赞 0
评论 0
@Test
public void testTextDecorationLineLineThroughApplied() {
UIManagerModule uiManager = getUIManagerModule();
ReactRootView rootView = createText(
uiManager,
JavaOnlyMap.of(ViewProps.TEXT_DECORATION_LINE, "line-through"),
JavaOnlyMap.of(ReactTextShadowNode.PROP_TEXT, "test text"));
TextView textView = (TextView) rootView.getChildAt(0);
Spanned text = (Spanned) textView.getText();
UnderlineSpan[] underlineSpans =
text.getSpans(0, text.length(), UnderlineSpan.class);
StrikethroughSpan strikeThroughSpan =
getSingleSpan(textView, StrikethroughSpan.class);
assertThat(underlineSpans).hasSize(0);
assertThat(strikeThroughSpan instanceof StrikethroughSpan).isTrue();
}
ReactTextTest.java 文件源码
项目:RNLearn_Project1
阅读 33
收藏 0
点赞 0
评论 0
@Test
public void testTextDecorationLineUnderlineLineThroughApplied() {
UIManagerModule uiManager = getUIManagerModule();
ReactRootView rootView = createText(
uiManager,
JavaOnlyMap.of(ViewProps.TEXT_DECORATION_LINE, "underline line-through"),
JavaOnlyMap.of(ReactTextShadowNode.PROP_TEXT, "test text"));
UnderlineSpan underlineSpan =
getSingleSpan((TextView) rootView.getChildAt(0), UnderlineSpan.class);
StrikethroughSpan strikeThroughSpan =
getSingleSpan((TextView) rootView.getChildAt(0), StrikethroughSpan.class);
assertThat(underlineSpan instanceof UnderlineSpan).isTrue();
assertThat(strikeThroughSpan instanceof StrikethroughSpan).isTrue();
}
ReactTestHelper.java 文件源码
项目:RNLearn_Project1
阅读 25
收藏 0
点赞 0
评论 0
/**
* @return a CatalystInstance mock that has a default working ReactQueueConfiguration.
*/
public static CatalystInstance createMockCatalystInstance() {
ReactQueueConfigurationSpec spec = ReactQueueConfigurationSpec.builder()
.setJSQueueThreadSpec(MessageQueueThreadSpec.mainThreadSpec())
.setNativeModulesQueueThreadSpec(MessageQueueThreadSpec.mainThreadSpec())
.build();
ReactQueueConfiguration ReactQueueConfiguration = ReactQueueConfigurationImpl.create(
spec,
new QueueThreadExceptionHandler() {
@Override
public void handleException(Exception e) {
throw new RuntimeException(e);
}
});
CatalystInstance reactInstance = mock(CatalystInstance.class);
when(reactInstance.getReactQueueConfiguration()).thenReturn(ReactQueueConfiguration);
when(reactInstance.getNativeModule(UIManagerModule.class))
.thenReturn(mock(UIManagerModule.class));
return reactInstance;
}
ReactModalHostView.java 文件源码
项目:RNLearn_Project1
阅读 28
收藏 0
点赞 0
评论 0
@Override
protected void onSizeChanged(final int w, final int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
if (getChildCount() > 0) {
final int viewTag = getChildAt(0).getId();
ReactContext reactContext = (ReactContext) getContext();
reactContext.runOnNativeModulesQueueThread(
new GuardedRunnable(reactContext) {
@Override
public void runGuarded() {
((ReactContext) getContext()).getNativeModule(UIManagerModule.class)
.updateNodeSize(viewTag, w, h);
}
});
}
}
ReactToolbarManager.java 文件源码
项目:RNLearn_Project1
阅读 30
收藏 0
点赞 0
评论 0
@Override
protected void addEventEmitters(final ThemedReactContext reactContext, final ReactToolbar view) {
final EventDispatcher mEventDispatcher = reactContext.getNativeModule(UIManagerModule.class)
.getEventDispatcher();
view.setNavigationOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
mEventDispatcher.dispatchEvent(
new ToolbarClickEvent(view.getId(), -1));
}
});
view.setOnMenuItemClickListener(
new ReactToolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
mEventDispatcher.dispatchEvent(
new ToolbarClickEvent(
view.getId(),
menuItem.getOrder()));
return true;
}
});
}
ReactScrollViewHelper.java 文件源码
项目:RNLearn_Project1
阅读 34
收藏 0
点赞 0
评论 0
private static void emitScrollEvent(ViewGroup scrollView, ScrollEventType scrollEventType) {
View contentView = scrollView.getChildAt(0);
if (contentView == null) {
return;
}
ReactContext reactContext = (ReactContext) scrollView.getContext();
reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher().dispatchEvent(
ScrollEvent.obtain(
scrollView.getId(),
scrollEventType,
scrollView.getScrollX(),
scrollView.getScrollY(),
contentView.getWidth(),
contentView.getHeight(),
scrollView.getWidth(),
scrollView.getHeight()));
}
CoreModulesPackage.java 文件源码
项目:RNLearn_Project1
阅读 31
收藏 0
点赞 0
评论 0
private UIManagerModule createUIManager(ReactApplicationContext reactContext) {
ReactMarker.logMarker(CREATE_UI_MANAGER_MODULE_START);
Systrace.beginSection(Systrace.TRACE_TAG_REACT_JAVA_BRIDGE, "createUIManagerModule");
try {
List<ViewManager> viewManagersList = mReactInstanceManager.createAllViewManagers(
reactContext);
return new UIManagerModule(
reactContext,
viewManagersList,
mUIImplementationProvider,
mLazyViewManagersEnabled);
} finally {
Systrace.endSection(Systrace.TRACE_TAG_REACT_JAVA_BRIDGE);
ReactMarker.logMarker(CREATE_UI_MANAGER_MODULE_END);
}
}
ReactTweetViewManager.java 文件源码
项目:react-native-twitterkit
阅读 38
收藏 0
点赞 0
评论 0
@Override
public void onSizeChanged(TweetView view, final int width, final int height) {
Log.d(TAG, "TweetView changed size: " + width + ", " + height);
ReactContext ctx = (ReactContext) view.getContext();
final UIManagerModule uiManager = ctx.getNativeModule(UIManagerModule.class);
final int reactTag = view.getReactTag();
ctx.runOnNativeModulesQueueThread(new Runnable() {
@Override
public void run() {
uiManager.updateNodeSize(reactTag, width, height);
}
});
}
RecyclerViewBackedScrollView.java 文件源码
项目:react-native-recyclerview-list
阅读 25
收藏 0
点赞 0
评论 0
@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
super.onScrollChanged(l, t, oldl, oldt);
if (mOnScrollDispatchHelper.onScrollChanged(l, t)) {
getReactContext().getNativeModule(UIManagerModule.class).getEventDispatcher()
.dispatchEvent(ScrollEvent.obtain(
getId(),
ScrollEventType.SCROLL,
0, /* offsetX = 0, horizontal scrolling only */
computeVerticalScrollOffset(),
mOnScrollDispatchHelper.getXFlingVelocity(),
mOnScrollDispatchHelper.getYFlingVelocity(),
getWidth(),
computeVerticalScrollRange(),
getWidth(),
getHeight()));
}
final int firstIndex = ((LinearLayoutManager) getLayoutManager()).findFirstVisibleItemPosition();
final int lastIndex = ((LinearLayoutManager) getLayoutManager()).findLastVisibleItemPosition();
if (firstIndex != mFirstVisibleIndex || lastIndex != mLastVisibleIndex) {
getReactContext().getNativeModule(UIManagerModule.class).getEventDispatcher()
.dispatchEvent(new VisibleItemsChangeEvent(
getId(),
SystemClock.nanoTime(),
firstIndex,
lastIndex));
mFirstVisibleIndex = firstIndex;
mLastVisibleIndex = lastIndex;
}
}
ReactTextTest.java 文件源码
项目:RNLearn_Project1
阅读 28
收藏 0
点赞 0
评论 0
@Test
public void testFontFamilyStyleApplied() {
UIManagerModule uiManager = getUIManagerModule();
ReactRootView rootView = createText(
uiManager,
JavaOnlyMap.of(ViewProps.FONT_FAMILY, "sans-serif"),
JavaOnlyMap.of(ReactTextShadowNode.PROP_TEXT, "test text"));
CustomStyleSpan customStyleSpan =
getSingleSpan((TextView) rootView.getChildAt(0), CustomStyleSpan.class);
assertThat(customStyleSpan.getFontFamily()).isEqualTo("sans-serif");
assertThat(customStyleSpan.getStyle() & Typeface.ITALIC).isZero();
assertThat(customStyleSpan.getWeight() & Typeface.BOLD).isZero();
}
RCTLazyLoadViewManager.java 文件源码
项目:react-native-pull-up-down-refresh
阅读 23
收藏 0
点赞 0
评论 0
@Override
protected void addEventEmitters(
final ThemedReactContext reactContext,
final RCTLazyLoadView view) {
view.setOnEvChangeListener(
new OnEvChangeListener() {
@Override
public void onWindowVisibilityChange( boolean hiddenState) {
reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher()
.dispatchEvent(new WindowVisibilityChangeEvent(view.getId(), SystemClock.nanoTime(), hiddenState));
}
});
}
RNDatePickerComponentViewManager.java 文件源码
项目:react-native-datepicker-component-android
阅读 34
收藏 0
点赞 0
评论 0
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
ReactContext reactContext = (ReactContext) view.getContext();
@SuppressLint("DefaultLocale") String date = String.format("%d-%d-%d", year, monthOfYear+1, dayOfMonth);
reactContext.getNativeModule(UIManagerModule.class)
.getEventDispatcher()
.dispatchEvent(new RNDatePickerComponentEvent(view.getId(), date));
}
RNWebGLTextureViewLoader.java 文件源码
项目:react-native-webgl-view-shot
阅读 30
收藏 0
点赞 0
评论 0
@Override
public void loadWithConfig(ReadableMap config, RNWebGLTextureCompletionBlock callback) {
int tag = config.getInt("view");
try {
UIManagerModule uiManager = this.reactContext.getNativeModule(UIManagerModule.class);
uiManager.addUIBlock(new RNWebGLTextureViewUIBlock(config, tag, callback));
}
catch (Exception e) {
callback.call(e, null);
}
}
ReactViewPager.java 文件源码
项目:react-native-tabbed-view-pager-android
阅读 28
收藏 0
点赞 0
评论 0
public ReactViewPager(ReactContext reactContext) {
super(reactContext);
mEventDispatcher = reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher();
mIsCurrentItemFromJs = false;
setOnPageChangeListener(new PageChangeListener());
setAdapter(new Adapter());
}
ReactTextInputManager.java 文件源码
项目:RNLearn_Project1
阅读 28
收藏 0
点赞 0
评论 0
public ReactTextInputTextWatcher(
final ReactContext reactContext,
final ReactEditText editText) {
mEventDispatcher = reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher();
mEditText = editText;
mPreviousText = null;
}
ReactTextTest.java 文件源码
项目:RNLearn_Project1
阅读 91
收藏 0
点赞 0
评论 0
@Test
public void testItalicFontApplied() {
UIManagerModule uiManager = getUIManagerModule();
ReactRootView rootView = createText(
uiManager,
JavaOnlyMap.of(ViewProps.FONT_STYLE, "italic"),
JavaOnlyMap.of(ReactTextShadowNode.PROP_TEXT, "test text"));
CustomStyleSpan customStyleSpan =
getSingleSpan((TextView) rootView.getChildAt(0), CustomStyleSpan.class);
assertThat(customStyleSpan.getStyle() & Typeface.ITALIC).isNotZero();
assertThat(customStyleSpan.getWeight() & Typeface.BOLD).isZero();
}
ReactTextTest.java 文件源码
项目:RNLearn_Project1
阅读 32
收藏 0
点赞 0
评论 0
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
@Test
public void testMaxLinesApplied() {
UIManagerModule uiManager = getUIManagerModule();
ReactRootView rootView = createText(
uiManager,
JavaOnlyMap.of(ViewProps.NUMBER_OF_LINES, 2),
JavaOnlyMap.of(ReactTextShadowNode.PROP_TEXT, "test text"));
TextView textView = (TextView) rootView.getChildAt(0);
assertThat(textView.getText().toString()).isEqualTo("test text");
assertThat(textView.getMaxLines()).isEqualTo(2);
assertThat(textView.getEllipsize()).isEqualTo(TextUtils.TruncateAt.END);
}
ReactSwitchManager.java 文件源码
项目:RNLearn_Project1
阅读 32
收藏 0
点赞 0
评论 0
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
ReactContext reactContext = (ReactContext) buttonView.getContext();
reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher().dispatchEvent(
new ReactSwitchEvent(
buttonView.getId(),
isChecked));
}
ReactDrawerLayoutManager.java 文件源码
项目:RNLearn_Project1
阅读 31
收藏 0
点赞 0
评论 0
@Override
protected void addEventEmitters(ThemedReactContext reactContext, ReactDrawerLayout view) {
view.setDrawerListener(
new DrawerEventEmitter(
view,
reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher()));
}