本文档解释了 React Native 中的核心 Android UI 组件,包括它们的实现、层次结构以及它们如何协同工作以在 Android 上渲染 React Native 应用程序。它涵盖了与 React Native 组件对应的原生 Android 视图类以及它们如何与 React Native 架构进行交互。
有关 iOS UI 组件的信息,请参阅 iOS 组件渲染。有关驱动两个平台的通用布局引擎,请参阅 布局引擎。
React Native 的 Android UI 组件构建在 Android View 系统之上,并具有用于连接 JavaScript 领域和原生 Android 视图的自定义实现。JavaScript 中的每个 React 组件都映射到 React Native 框架管理的相应原生 Android 视图。
来源
React Native 提供了几个自定义 Android 视图实现,构成了 UI 组件系统的基础。
ReactViewGroup 是最基础的 UI 组件,它扩展了 Android 的 ViewGroup 类。它作为 React Native <View> 组件的基础,并提供对以下功能的支持:
来源
ReactTextView 扩展了 Android 的 AppCompatTextView 并实现了 React Native 的文本渲染功能,包括:
来源
这些视图分别扩展了 Android 的 ScrollView 和 HorizontalScrollView,增加了 React Native 特定的功能:
它们处理垂直(ReactScrollView)和水平(ReactHorizontalScrollView)滚动用例。
来源
React Native 使用一个管理系统来创建、更新和管理原生 Android 视图。
每个 UI 组件都有一个对应的 ViewManager 类,负责:
关键管理器类包括:
| 管理器类 | 视图类 | React Native 组件 |
|---|---|---|
| ReactViewManager | ReactViewGroup | <View> |
| ReactTextViewManager | ReactTextView | <Text> |
| ReactImageManager | ReactImageView | <Image> |
| ReactScrollViewManager | ReactScrollView | <ScrollView> (垂直) |
| ReactHorizontalScrollViewManager | ReactHorizontalScrollView | <ScrollView horizontal> |
来源
React Native Android UI 组件使用属性应用系统,将 JavaScript 中的样式和属性应用于原生视图。
属性系统通过以下方式工作:
ReactStylesDiffMap 进行更新处理的常见属性类型包括:
来源
React Native 为 Android 视图实现了一些优化技术。
对于大型列表和复杂视图来说,一个关键的优化是 removeClippedSubviews 属性,它:
实现涉及:
ReactClippingViewGroup 接口,由支持剪裁的视图实现ReactViewGroup 中的特殊视图附加/分离逻辑来源
在 Fabric 渲染器架构中,FabricUIManager 负责管理 UI 组件。
主要职责
来源
React Native 中的 Android UI 组件处理各种类型的用户交互和事件。
React Native 通过 PointerEvents 枚举提供了一个可配置的系统来处理触摸事件。
AUTO:默认行为,组件及其子组件接收事件NONE:组件及其子组件不接收事件BOX_NONE:组件不接收事件,但子组件可以BOX_ONLY:组件接收事件,但子组件不能触摸处理在 ReactViewGroup 等视图类中通过以下方法实现:
onInterceptTouchEventonTouchEventdispatchGenericMotionEvent来源
滚动视图为滚动交互分发专门的事件:
onScrollBeginDragonScrollonScrollEndDragonMomentumScrollBeginonMomentumScrollEnd这些通过 ReactScrollViewHelper 类实现,该类处理事件节流和分发。
来源
React Native Android UI 组件实现了几个在应用程序中常用的自定义功能。
像 ReactViewGroup 这样的组件支持全面的边框样式
来源
视图支持不同的溢出行为
visible: 默认,内容不裁剪hidden: 内容裁剪到视图边界scroll: 内容裁剪但可滚动来源
React Native Android 中的文本渲染使用专门的系统进行布局和测量。
文本渲染中的关键组件
来源
React Native 支持视图回收以提高性能和减少内存消耗。
回收系统
来源
React Native 中的 Android UI 组件提供了一整套原生视图和管理类,它们在 React 的声明式组件模型和 Android 的原生 UI 系统之间架起了桥梁。它们负责
这些组件协同工作,创建了一个高性能的 UI 系统,该系统在利用原生 Android 功能的同时,维护了 React 的编程模型。