ReactNative调用android原生View

2024-05-06 14:18

本文主要是介绍ReactNative调用android原生View,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

RN开发过程中,React Native是将原生控件封装桥接成JS组件来使用的,这保证了其性能的高效性。但是有时候官方封装的常用组件不能满足需求,就需要结合原生UI使用,例如:对原生实现的UI复用;复杂UI仍然需要原生自定义View实现。接下来就简单记录下RN开发过程中调用原生UI的流程。

例如下面这个UI效果,就需要用到Android原生自定义View实现:
1.png

以上图实现效果为例,分别从Android端和RN端说明。

Android端

1. 创建自定义控件CircleMenu;

public class CircleMenu extends View {private Context mContext;/** 点击外面 */public static final int DL_TOUCH_OUTSIDE = -2;/** 点击中间点 */public static final int DL_TOUCH_CENTER = -1;/** 中心点的坐标X */private float mCoreX;/** 中心点的坐标Y */private float mCoreY;/** 是否有中心按钮 */private boolean mHasCoreMenu;/** 中心按钮的默认背景 */private int mCoreMenuNormalBackgroundColor;/** 中间按钮的描边颜色 */private int mCoreMenuStrokeColor;/** 中间按钮的描边边框大小 */private float mCoreMenuStrokeSize;/** 中间按钮选中时的背景颜色 */private int mCoreMenuSelectedBackgroundColor;/** 中心按钮圆形半径 */private float mCoreMenuRoundRadius;/** 菜单数量 */private int mRoundMenuNumber;/** 菜单偏移角度 */private float mRoundMenuDeviationDegree;/** 菜单图片 */private ArrayList<Bitmap> mRoundMenuDrawableList = new ArrayList<>();/** 是否画每个菜单扇形到中心点的直线 */private boolean mIsDrawLineToCenter;/** 菜单正常背景颜色 */private int mRoundMenuNormalBackgroundColor;/** 菜单点击背景颜色 */private int mRoundMenuSelectedBackgroundColor;/** 菜单描边颜色 */private int mRoundMenuStrokeColor;/** 菜单描边宽度 */private float mRoundMenuStrokeSize;/** 菜单图片与中心点的距离 百分数 */private float mRoundMenuDistance;/** 点击状态 -2是无点击,-1是点击中心圆,其他是点击菜单 */private int onClickState = DL_TOUCH_OUTSIDE;/** 记录按下时间,超过预设时间算长按按钮 */private long mTouchTime;public CircleMenu(Context context) {super(context);init(context, null);}public CircleMenu(Context context, @Nullable AttributeSet attrs) {super(context, attrs);init(context, attrs);}public CircleMenu(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);init(context, attrs);}/*** 初始化数据* @param context* @param attrs*/private void init(Context context, @Nullable AttributeSet attrs) {mContext = context;// 加载默认资源final Resources res = getResources();final boolean defaultHasCoreMenu = res.getBoolean(R.bool.default_has_core_menu);final int defaultCoreMenuNormalBackgroundColor = res.getColor(R.color.default_core_menu_normal_background_color);final int defaultCoreMenuStrokeColor = res.getColor(R.color.default_core_menu_stroke_color);final float defaultCoreMenuStrokeSize = res.getDimension(R.dimen.default_core_menu_stroke_size);final int defaultCoreMenuSelectedBackgroundColor = res.getColor(R.color.default_core_menu_selected_background_color);final float defaultCoreMenuRoundRadius = res.getDimension(R.dimen.default_core_menu_round_radius);final int defaultRoundMenuNumber = res.getInteger(R.integer.default_round_menu_number);final int defaultRoundMenuDeviationDegree = res.getInteger(R.integer.default_round_menu_deviation_degree);final boolean defaultIsDrawLineToCenter = res.getBoolean(R.bool.default_is_draw_line_to_center);final int defaultRoundMenuNormalBackgroundColor = res.getColor

这篇关于ReactNative调用android原生View的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/964587

相关文章

Android中Dialog的使用详解

《Android中Dialog的使用详解》Dialog(对话框)是Android中常用的UI组件,用于临时显示重要信息或获取用户输入,本文给大家介绍Android中Dialog的使用,感兴趣的朋友一起... 目录android中Dialog的使用详解1. 基本Dialog类型1.1 AlertDialog(

在C#中调用Python代码的两种实现方式

《在C#中调用Python代码的两种实现方式》:本文主要介绍在C#中调用Python代码的两种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#调用python代码的方式1. 使用 Python.NET2. 使用外部进程调用 Python 脚本总结C#调

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

Android自定义Scrollbar的两种实现方式

《Android自定义Scrollbar的两种实现方式》本文介绍两种实现自定义滚动条的方法,分别通过ItemDecoration方案和独立View方案实现滚动条定制化,文章通过代码示例讲解的非常详细,... 目录方案一:ItemDecoration实现(推荐用于RecyclerView)实现原理完整代码实现

SpringCloud之LoadBalancer负载均衡服务调用过程

《SpringCloud之LoadBalancer负载均衡服务调用过程》:本文主要介绍SpringCloud之LoadBalancer负载均衡服务调用过程,具有很好的参考价值,希望对大家有所帮助,... 目录前言一、LoadBalancer是什么?二、使用步骤1、启动consul2、客户端加入依赖3、以服务

Android App安装列表获取方法(实践方案)

《AndroidApp安装列表获取方法(实践方案)》文章介绍了Android11及以上版本获取应用列表的方案调整,包括权限配置、白名单配置和action配置三种方式,并提供了相应的Java和Kotl... 目录前言实现方案         方案概述一、 androidManifest 三种配置方式

Vue 调用摄像头扫描条码功能实现代码

《Vue调用摄像头扫描条码功能实现代码》本文介绍了如何使用Vue.js和jsQR库来实现调用摄像头并扫描条码的功能,通过安装依赖、获取摄像头视频流、解析条码等步骤,实现了从开始扫描到停止扫描的完整流... 目录实现步骤:代码实现1. 安装依赖2. vue 页面代码功能说明注意事项以下是一个基于 Vue.js

讯飞webapi语音识别接口调用示例代码(python)

《讯飞webapi语音识别接口调用示例代码(python)》:本文主要介绍如何使用Python3调用讯飞WebAPI语音识别接口,重点解决了在处理语音识别结果时判断是否为最后一帧的问题,通过运行代... 目录前言一、环境二、引入库三、代码实例四、运行结果五、总结前言基于python3 讯飞webAPI语音

Android WebView无法加载H5页面的常见问题和解决方法

《AndroidWebView无法加载H5页面的常见问题和解决方法》AndroidWebView是一种视图组件,使得Android应用能够显示网页内容,它基于Chromium,具备现代浏览器的许多功... 目录1. WebView 简介2. 常见问题3. 网络权限设置4. 启用 JavaScript5. D

Android如何获取当前CPU频率和占用率

《Android如何获取当前CPU频率和占用率》最近在优化App的性能,需要获取当前CPU视频频率和占用率,所以本文小编就来和大家总结一下如何在Android中获取当前CPU频率和占用率吧... 最近在优化 App 的性能,需要获取当前 CPU视频频率和占用率,通过查询资料,大致思路如下:目前没有标准的