当前位置: 首页 > news >正文

网站建设需要的流程湘潭营销型网站建设

网站建设需要的流程,湘潭营销型网站建设,怎么用ps做网站上的产品图,兰州网站建设哪家专业惯例这是写在前面的话,周五的时候和同事朋友聊起来写博客这件事,自己在朋友圈吹下的牛逼,无论如何都是要完成的啊,等把博客写完了,奖励自己玩一会儿魔兽,我的小号兽人战士已经10级了,联盟&#…

惯例这是写在前面的话,周五的时候和同事朋友聊起来写博客这件事,自己在朋友圈吹下的牛逼,无论如何都是要完成的啊,等把博客写完了,奖励自己玩一会儿魔兽,我的小号兽人战士已经10级了,联盟,你们颤抖吧。


图片发自简书App

我们这里从react-natvie 调用原生android的方法,获取原生android的数据部分开始讲,其中还包括androidreact-native的回调。

这就是说的互相交互的事,那么我们开始吧!

react-natvie 调用原生android的方法,获取原生android的数据

react-native和原生平台API之间,有一个JavaScript的桥接层,react-native就是通过桥接层来和原生的平台进行交互的,其中,这涉及到了两个模块NativeModuleNativeEventEmitter

1.NativeModule:用于JavaScript代码调用原生的代码。
2.NativeEventEmitter:用于原生代码发送消息到JavaScript代码。

我们可以看一下Animated下的源码实现:

目录在这里

node_modules\react-native\Libraries\Animated\src\NativeAnimatedHelper.js

它的第一行就是

const NativeAnimatedModule = require('NativeModules').NativeAnimatedModule;
const NativeEventEmitter = require('NativeEventEmitter');

引用了这两个模块,我们再看一下下面是怎么调用的呢?

 createAnimatedNode: function(tag: ?number, config: Object): void {assertNativeAnimatedModule();NativeAnimatedModule.createAnimatedNode(tag, config);},

创建一个Animated动画,是通过调用NativeAnimatedModule.createAnimatedNode(tag, config);来实现的。

而在android这里的代码,如果想要能够让react-native调用到,需要实现三个步骤:

1.写出你想要调用的模块(继承ReactContextBaseJavaModule)
2.把这个模块导出(实现导出接口ReactPackage)
3.把这个模块注册发布(在MainApplication中注册)

那么我们开始吧:

1.写出你想要调用的模块(继承ReactContextBaseJavaModule)

//.../*** Created by feiyu on 2018/5/12.*/public class CommunicationModule extends ReactContextBaseJavaModule {private final ReactApplicationContext mReactContext;public CommunicationModule(ReactApplicationContext reactContext) {super(reactContext);this.mReactContext = reactContext;}@Overridepublic String getName() {//你想要调用的那个模块的名称,实际上就是当前的这个对象return "Communication";}@Nullable@Overridepublic Map<String, Object> getConstants() {HashMap<String,Object> constants = new HashMap<>();constants.put("systemName","android");return constants;}//我们想要调用的原生的android方法,这个方法可以打开一个activity,同时还可以传递参数过来@ReactMethodpublic void StartActivityFromReactNative(String activityName, String data, Promise promise, Callback callback){Activity currentActivity = getCurrentActivity();try{if(currentActivity != null){Class<?> toActivity = Class.forName("yourPackageName" +"." +activityName);Intent intent = new Intent(currentActivity,toActivity);intent.putExtra("params",data);intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//在react native 打开activitycurrentActivity.startActivity(intent);}promise.resolve(true);callback.invoke(true);}catch(ClassNotFoundException e){throw new JSApplicationIllegalArgumentException("打开activity失败"+e.getMessage());}}
}

在这里我们实现了一个必须的方法就是getName这个方法返回的是我们想要调用的那个模块的名称,也就是当前对象。同时我们想要给react-native传递一些参数,就实现了getConstants方法,在这个方法中我们设置了当前平台的名称。我们想要调用一个android本地的方法,所以我们实现了StartActivityFromReactNative方法,重要的是我们需要设置@ReactMethod注解。调用完StartActivityFromReactNative方法后我们想要知道调用结果呢?我们有两种方式PromiseCallback都可以,例如上面的代码。

2.把这个模块导出(实现导出接口ReactPackage)

//.../*** Created by feiyu on 2018/5/12.*/public class Communication implements ReactPackage {@Overridepublic List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {List<NativeModule> modules = new ArrayList<>();modules.add(new CommunicationModule(reactContext));return modules;}@Overridepublic List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {return Collections.emptyList();}public List<Class<? extends JavaScriptModule>> createJSModules(){return Collections.emptyList();}
}

上面的这个就是固定模式了,你在实现任意的模块时都可以复制上面的代码,然后把CommunicationModule换成你的。

3.把这个模块注册发布(在MainApplication中注册)

第三步就非常简单了!

//...public class MainApplication extends Application implements ReactApplication {private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {@Overridepublic boolean getUseDeveloperSupport() {return BuildConfig.DEBUG;}@Overrideprotected List<ReactPackage> getPackages() {return Arrays.<ReactPackage>asList(new MainReactPackage(),new Communication());}@Overrideprotected String getJSMainModuleName() {return "index";}};//...
}

最后我们在getPackages中返回我们的对象就可以了new Communication().

react-native 调用android原生

react-native调用原生平台是基于NativeModules,调用的方法是NativeModules.模块名称.接口名称。
原生平台返回数据到react-native平台是基于回调,回调的原型定义是RCTRResponseSenderBlock(IOS)平台com.facebook.react.bridge.CallBack(Android平台)

我们想要获取android平台定义的那个systemName的话只需要这样:

if(Platform.OS === "android"){let systemName = NativeModule.Communction.systemName;
}

调用我们定义的那个打开activity的方法也是同上:

if(Platform.OS === "android"){NativeModule.Communction.StartActivityFromReactNative("CommunicationActivity",123456);
}

这样就可以了。然后怎么获取到react-native给传过来的数据呢?在androidactivity中:

public class CommunicationActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_communication);Intent intent = getIntent();if(intent != null){String params = intent.getStringExtra("'params");Toast.makeText(this,"从react-native中传递过来的数据"+params,Toast.LENGTH_LONG).show();}}
}

需要注意的地方:

1.react native调用android进行界面跳转时,需要设置FLAG_ACTIVITY_NEW_TASK标志
2.我们在调用android的模块时,名称要和getName的方法一样:

 NativeModule.Communction.systemName;

就是Communction...

到这里react-nativeandroid的就Over了。祝大家周末愉快!

参考书籍:《React Native 移动开发实战》



作者:雨飞飞雨
链接:https://www.jianshu.com/p/ce845ac1a07c
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
http://www.lbrq.cn/news/2643409.html

相关文章:

  • 温江建网站申请百度收录网址
  • wordpress促销插件上海seo推广公司
  • 正规网站建设的公司名优网站关键词优化
  • 建设完网站成功后需要注意什么安卓优化大师官方下载
  • 专业的网站制作公司产品软文代写
  • 怎么让百度收录网站网上卖产品怎么推广
  • 做网站买服务器怎么样百度快速优化软件排名
  • 网站开发哪里seo推广工具
  • 网站建设教程视频网络宣传推广方案
  • 漫画交流网站怎么做seo代做
  • 设计制作一个保温杯pptsem与seo的区别
  • 西宁做网站建设公司高端营销型网站
  • 邮件网站排名郑州网络推广培训
  • 电脑网站开发手机上可以打开吗最新国内新闻10条
  • 海南三亚做网站互联网营销师
  • 建设网站需要收费吗360搜索推广
  • 杭州开发网站的公司软文推广文章范文
  • 网站建设报价东莞百度app下载安装
  • 做网站怎么收费衡阳seo
  • 做电影下载网站好写手接单平台
  • 自己做剧本网站优化设计英语
  • 网站建设公司网站口碑营销的重要性
  • 甘肃农村网站建设整合营销传播的方法包括
  • 建立网站外链常用的渠道有哪些企业文化的重要性和意义
  • 网站怎么做防360拦截seo外包公司专家
  • 新闻标题做的好的网站长沙百度网站推广优化
  • 做企业展示网站怎样注册网站
  • 广州市城市建设深圳谷歌seo公司
  • 做网站用不用thinkphp枸橼酸西地那非片是什么
  • 青年旅舍网站开发背景及意义活动策划公司
  • 【Day 18】Linux-DNS解析
  • Python 基础详解:数据类型(Data Types)—— 程序的“数据基石”
  • Apollo中三种相机外参的可视化分析
  • 进阶向:Python开发简易QQ聊天机器人
  • Pandas query() 方法详解
  • 昇思学习营-模型推理和性能优化学习心得