简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网

我猜去全部机翻+个人修改补充+demo测试的形式,对expo进行一次大补血!欢迎加入expo兴趣学习交流群:597732981

【之前我写过一些列关于expo和rn入门配置的东i西,大家可以点击这里查看:从零学习rn开发

相关文章:

Expo大作战(一)--什么是expo,如何安装expo clinet和xde,xde如何使用

Expo大作战(二)--expo的生命周期,expo社区交流方式,expo学习必备资源,开发使用expo时关注的一些问题

Expo大作战(三)--针对已经开发过react native项目开发人员有针对性的介绍了expo,expo的局限性,开发时项目选型注意点等

Expo大作战(四)--快速用expo构建一个app,expo中的关键术语

Expo大作战(五)--expo中app.json 文件的配置信息

Expo大作战(六)--expo开发模式,expo中exp命令行工具,expo中如何查看日志log,expo中的调试方式

Expo大作战(七)--expo如何使用Genymotion模拟器

Expo大作战(八)--expo中的publish以及expo中的link,对link这块东西没有详细看,大家可以来和我交流

更多>>

写在二十三章以后的话,之前的翻译,不管如何,好与不好,终究是告一段落,也把expo基础理论的东西又深入的理解了一遍,后续expo大作战系列将主要介绍expo sdk的api。


MapView

在iOS上使用Apple地图或Google地图,在Android上使用Google地图的地图组件。 通过Airbnb在airbnb/react-native-maps上创建。 在expo应用程序内或在iOS独立应用程序内使用时无需设置。 请参阅下文,了解如何将配置配置为Android上的独立应用。

import React from 'react';
import { MapView } from 'expo'; export default class App extends React.Component {
render() {
return (
<MapView
style={{ flex: }}
initialRegion={{
latitude: 37.78825,
longitude: -122.4324,
latitudeDelta: 0.0922,
longitudeDelta: 0.0421,
}}
/>
);
}
}

Expo.MapView

查看详细文档在 airbnb/react-native-maps.

在Android上部署到独立应用程序(Deploying to a standalone app on Android)

如果您已将Google登录集成到独立应用程序中,这非常简单。否则,还有一些额外的步骤。

如果您已经配置了Google登录

  • 打开浏览器到Google API Manager。
  • 选择您的项目并启用Google Maps Android API
  • 在app.json中,将API密钥从android.config.googleSignIn复制到android.config.googleMaps.apiKey。
  • 重建您的独立应用程序。

如果您尚未配置Google登录

  1. 建立你的应用程序,记下你的Android软件包名称(例如:ca.brentvatne.growlerprowler)
  2. 打开浏览器到Google API Manager并创建一个项目。
  3. 创建完成后,转到该项目并启用Google Maps Android API
  4. 返回https://console.developers.google.com/apis/credentials并点击创建凭证,然后点击API密钥。
  5. 在弹出的模式中,单击RESTRICT KEY。
  6. 在密钥限制下选择Android应用程序单选按钮。
  7. 点击+添加包名称和指纹按钮。(Click the + Add package name and fingerprint button.)
  8. 将你的android.package从app.json(例如:ca.brentvatne.growlerprowler)添加到Package name字段。
  9. 运行keytool -list -printcert -jarfile growler.apk | grep SHA1 | awk'{print $ 2}'其中,growler.apk是您在步骤1中创建的apk的路径。(Run keytool -list -printcert -jarfile growler.apk | grep SHA1 | awk '{ print $2 }' where growler.apk is the path to the apk you built in step 1.)
  10. 取出步骤9的输出并将其插入“SHA-1证书指纹”字段中。
  11. 将API密钥(页面上的第一个文本输入)复制到android.config.googleMaps.apiKey字段下的app.json中。看一个例子差异
  12. 按保存键,然后像步骤1一样重新构建应用程序。

在iOS上部署到独立应用程序(Deploying to a standalone app on iOS)

无需特殊配置。

expo中的mapview依然不适合国情,因为 他用上google的服务,expo中凡是用Google服务的在国内都是shit!

MailComposer

使用操作系统特定的用户界面编写邮件的API。

Expo.MailComposer.composeAsync(options)

打开iOS的邮件模式和Android的邮件应用程序,并使用提供的数据填充字段。

参数

saveOptions(object) - 定义数据以填充邮件的地图:

  • recipients (array) - 收件人的电子邮件地址数组。
  • ccRecipients (array ) - CC收件人的电子邮件地址数组。
  • bccRecipients (array)  - BCC收件人的电子邮件地址数组。
  • subject (string) - 邮件的主题。
  • body (string) - 邮件的正文。
  • isHtml (boolean)  - 主体是否包含HTML标记,以便可以正确格式化。 在Android上无法完美运行。
  • attachments (array)  - 一个应用程序的内部文件uris阵列附加。

返回

解决对包含可能被发送,保存或取消的状态字段的对象的承诺。 Android不提供这样的信息,所以它总是解决发送。(Resolves to a promise with object containing status field that could be either sentsaved or cancelled. Android does not provide such info so it always resolves to sent.)

磁力仪(Magnetometer)

访问设备磁力计传感器以响应测量磁场的变化。 您可以使用Expo.Magnetometer访问校准值。 与Expo.MagnetometerUncalibrated的原始价值。磁力计未经校准。

Expo.Magnetometer.addListener(listener)

订阅更新磁力计。

参数

listener (function) - 磁盘计更新可用时调用的回调函数。 当被调用时,监听器被提供一个包含键x,y,z的对象的单个参数。

返回

一个EventSubscription对象,当您想要取消订阅侦听器时,您可以调用remove()。

Expo.Magnetometer.removeAllListeners()

删除所有的监听对象。

Expo.Magnetometer.setUpdateInterval(intervalMs)
订阅更新磁力计。

参数

intervalMs(数字)磁力计更新之间的期望间隔(以毫秒为单位)。

Lottie

Expo包括对AirBnB动画库Lottie的支持。一个强大的动画库!

import React from 'react';
import { Button, StyleSheet, View } from 'react-native';
import { DangerZone } from 'expo';
const { Lottie } = DangerZone; export default class App extends React.Component {
state = {
animation: null,
}; componentWillMount() {
this._playAnimation();
} render() {
return (
<View style={styles.animationContainer}>
{this.state.animation &&
<Lottie
ref={animation => {
this.animation = animation;
}}
style={{
width: ,
height: ,
backgroundColor: '#eee',
}}
source={this.state.animation}
/>}
<View style={styles.buttonContainer}>
<Button
title="Restart Animation"
onPress={this._playAnimation}
/>
</View>
</View>
);
} _playAnimation = () => {
if (!this.state.animation) {
this._loadAnimationAsync();
} else {
this.animation.reset();
this.animation.play();
}
}; _loadAnimationAsync = async () => {
let result = await fetch(
'https://cdn.rawgit.com/airbnb/lottie-react-native/635163550b9689529bfffb77e489e4174516f1c0/example/animations/Watermelon.json'
); this.setState(
{ animation: JSON.parse(result._bodyText) },
this._playAnimation
);
};
} const styles = StyleSheet.create({
animationContainer: {
backgroundColor: '#fff',
alignItems: 'center',
justifyContent: 'center',
flex: ,
},
buttonContainer: {
paddingTop: ,
},
});

导入Lottie

Lottie SDK目前位于Expo的DangerZone命名空间下,因为它的实现仍然在Alpha中。 你可以像这样导入它:

import { DangerZone } from 'expo';
let { Lottie } = DangerZone;

使用Lottie API
我们从lottie-react-native获取API,因此文档是最好的资源。


下一张继续介绍,这一篇主要介绍了:expo sdk api之MapView(地图),MailComposer(磁力传感计),Lottie(动画)欢迎大家关注我的微信公众号,这篇文章是否被大家认可,我的衡量标准就是公众号粉丝增长人数。欢迎大家转载,但必须保留本人博客链接!

 

Expo大作战(三十三)--expo sdk api之MapView(地图),MailComposer(磁力传感计),Lottie(动画)的更多相关文章

  1. Expo大作战(三十七)--expo sdk api之 GLView,GestureHandler,Font,Fingerprint,DeviceMotion,Brightness

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  2. Expo大作战(三十一)--expo sdk api之Payments(expo中的支付),翻译这篇文章傻逼了,完全不符合国内用户,我只负责翻译大家可以略过!

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  3. Expo大作战(三十)--expo sdk api之Permissions(权限管理模块),Pedometer(计步器api)

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  4. Expo大作战(二十三)--expo中expo kit 高级属性(没干货)

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  5. Expo大作战(三十九)--expo sdk api之 DocumentPicker,Contacts(获取手机联系人信息),Branch

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  6. Expo大作战(三十八)--expo sdk api之 FileSystem(文件操作系统)

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  7. Expo大作战(三十六)--expo sdk api之 ImagePicker,ImageManipulator,Camera

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  8. Expo大作战(三十五)--expo sdk api之Location!

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  9. Expo大作战(三十四)--expo sdk api之LinearGradient(线性渐变),KeepAwake(保持屏幕不休眠),IntentLauncherAndroid,Gyroscope,

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

随机推荐

  1. 开源性能测试工具Locust使用篇(三)

    脚本增强 面对较复杂的测试场景,我们可能还是会感觉无从下手:例如,很多时候脚本需要做关联或参数化处理,Locust中就不知道怎么实现了.可能也是这方面的原因,感觉难以将Locust应用到实际的性能测试 ...

  2. 谈谈 JavaScript 的正则表达式

    一.背景 最近在做 CMS 系统中不同身份登录用户的权限管理,涉及到对 api 路径的识别去判断是否放行.以前对正则表达式都是敬而远之,要用到的话都是直接复制粘贴现成网上的表达式,看也看不太懂,借这次 ...

  3. Telerik for AJAX RadGrid控件

    作为一名.net小白,今天分享一下telerik知识的学习.熟悉ASP.NET Web Form的都知道Grid View或者是List View等表格控件,所以今天和大家分享一下telerik Ra ...

  4. vsftpd3.0.3配置

    2019.2.18更新 证实可用!!! 原文: 这两天测试在Ubuntu18.04上搭建一个ftp服务器,搜了一下大家都在用vsftpd,于是根据这个大佬的基础教程搭了一个,搭完一切正常,在windo ...

  5. postgresql-分页数据重复问题探索

    postgresql-分页数据重复探索 问题背景 许多开发和测试人员都可能遇到过列表的数据翻下一页的时候显示了上一页的数据,也就是翻页会有重复的数据. 如何处理? 这个问题出现的原因是因为选择的排序字 ...

  6. 14-03 java BigInteger类,BigDecimal类,Date类,DateFormat类,Calendar类

    BigInteger类 发 package cn.itcast_01; import java.math.BigInteger; /* * BigInteger:可以让超过Integer范围内的数据进 ...

  7. linux系统中的文件权限详解(转)

    一.在<Linux系统中如何查看文件属性>中介绍了通过ls指令来查看文件的属性,具体如下: [命令] letuknowit@ubuntu:/$ cd /tmp letuknowit@ubu ...

  8. 使用切片拦截Rest服务

    使用切片拦截Rest服务 1.使用过滤器Filter: 我们可以在建立的springboot的项目中建立新的类来是先Filter的接口,doFilter是过滤器中的主要方法,用来做处理逻辑,最后我们只 ...

  9. nginx部分实现原理解析

    nginx底层实现有几个主要的模块: 进程模块 事件模块 网络模块 进程模块 默认采用守护模式启动,守护模式让master进程启动后在后台运行,不在窗口上卡住. Nginx 启动后会有一个 Maste ...

  10. 从零开始学 Web 之 Ajax(一)服务器相关概念

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...