首页 > 编程知识 正文

android组件化和模块化区别,android混合开发

时间:2023-05-03 19:32:53 阅读:165524 作者:1033

本机模块:

java :

1 .实现1.ToastModule本机软件包的核心操作

publicclasstoastmoduleextendsreactcontextbasejavamodule {

//自定义常数

privatestaticfinalstringduration _ short _ key=' short ';

privatestaticfinalstringduration _ long _ key=' long ';

//制作方法

公共模型(reactapplicationcontextreactcontext ) {

super (快速上下文;

}

设置//js呼叫本机模块的名称

@Override

公共字符串获取名称

返回' toast example ';

}

//使用预定义常数的场景

@Override

公共地图获取常量(

final Map constants=new HashMap (;

constants.put (duration _ short _ key,Toast.LENGTH_SHORT );

constants.put (duration _ long _ key,Toast.LENGTH_LONG );

返回常数;

}

//*

*演示js如何调用java

* Java方法需要注释@ReactMethod。 方法的返回类型必须为void

*/

@ReactMethod

公共void show (string msg,int time ) {

toast.maketext (getreactapplicationcontext (,msg,time ).show );

}

}

2.toast pack注册模块

publicclasstoastpackageimplementsreactpackage {

//创建本机模块

@Override

publiclistcreatenativemodules (reactapplicationcontextreactcontext ) (

List list=new ArrayList (;

list.add(newtoastmodule ) reactcontext );

返回列表;

}

//创建本地视图

@Override

公共列表创建视图管理(reactapplicationcontextreactcontext ) {

List list=new ArrayList (;

返回列表;

}

}

3 .主应用程序关系本机模块注册类

@Override

保护列表获取包(

return Arrays.asList (

new MainReactPackage (,new ToastPackage )。

);

}

js:

方式1 :

native modules.toast example.show (' dad asdasdas ',native modules.toast example.short ) )。

方式2

ToastExample.js:

//rn引入中原生模块的类

import { native modules } from ' react-native ';

//导出自定义本机模块

exportdefaultnativemodules.toast example;

ToastExampleDemo.js

//导入直接使用本机模块

import Toast from './ToastExample ';

Press=() )。

Toast.show (弹出窗口Toast )、Toast.SHORT );

(;

本机UI组件:

java:

1.WebViewManager.js本机UI组件类

publicclasswebviewmanagerextendssimpleviewmanager {

返回调用//js时使用的名称

@Override

公共字符串获取名称

返回' RCT webview ';

}

//创建用于初始化的实例控件对象

@Override

保护webviewcreateviewinstance (themedreactcontextreactcontext ) {

webview webview=new webview (react context );

webview.setwebviewclient (newwebviewclient ) )。

@Override

publicbooleanshouldoverrideurlloading (webview view,String url ) )。

view.loadURL(URL;

返回真;

}

);

返回webview;

}

设置//rn的方法属性

@reactprop(name='URL ' ) )。

publicvoidseturl(webviewview,@Nullable String url )。

view.loadURL(URL;

}

@reactprop(name='html ' ) )。

publicvoidsethtml(webviewview,@Nullable String html )。

view.loaddata(html,' text/html; charset=UTF-8 ',' utf-8 ';

}

}

2 .注册本机组件

@Override

公共列表创建视图管理(reactapplicationcontextreactcontext ) {

List list=new ArrayList (;

返回列表;

}

3 .管理注册

@Override

保护列表获取包(

return Arrays.asList (

new MainReactPackage (,new ToastPackage )。

);

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。