简要:本系列文章讲会对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. Spring MVC & Boot & Cloud 技术教程汇总(长期更新)

    昨天我们发布了Java成神之路上的知识汇总,今天继续. Java成神之路技术整理(长期更新) 以下是Java技术栈微信公众号发布的关于 Spring/ Spring MVC/ Spring Boot/ ...

  2. app自动化测试中的相关api

    这个说的api即python自动化测试中经常会使用到的一些api,具体如下: 1.find_element_by_id/find_elements_by_id 定位元素api,使用方法如下: driv ...

  3. web自动化测试---xpath方式定位页面元素

    在实际应用中,如果存在多个相同元素,包括属性相同时,一般会选用这种方式,当然如果定位属性唯一的话,也是可以使用的,不过这种方式没有像id,tag,name等容易理解,下面讲下xpath定位元素的方法 ...

  4. (转)你真的会写单例模式吗——Java实现

    http://www.runoob.com/design-pattern/singleton-pattern.html 单例模式可能是代码最少的模式了,但是少不一定意味着简单,想要用好.用对单例模式, ...

  5. SOA总结(脑图图片)

  6. 使用Let's Encrypt加密你的小站

    介绍 Let's Encrypt是一个免费并且开源的CA,且已经获得Mozilla.微软等主要浏览器厂商的根授信.它极大低降低DV证书的入门门槛,进而推进全网的HTTPS化. Certbot is a ...

  7. Python基础之带你快速掌握列表的常用方法

    append 前面说过列表是一种 内容可改变的 对象. append方法就会改变列表的内容,在后面添加一个元素 比如 a = [1, 2, 3.14, 'hello'] # append 之后,a就变 ...

  8. sql 表连接

     join (inner join ) 注释:INNER JOIN 关键字在表中存在至少一个匹配时返回行. left join  注释:LEFT JOIN 关键字从左表(table1)返回所有的行,即 ...

  9. JavaWeb学习(二)———Tomcat服务器学习和使用(一)

    一.Tomcat服务器端口的配置 Tomcat的所有配置都放在conf文件夹之中,里面的server.xml文件是配置的核心文件. 如果想修改Tomcat服务器的启动端口,则可以在server.xml ...

  10. SSM-动态SQL

    SSM-动态SQL ssm框架 Mybatis  动态SQL主要是解决同一类SQL语句匹配不同的问题,举个栗子: 加入我要执行一个查询语句,但是是一个不确定的查询语句,可能会根据ID去查,如果ID没有 ...