Expo大作战系列完结!

简要:本系列文章讲会对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。


Assets

该模块提供了expo资产体系的接口。资产是与应用程序在运行时需要的源代码一起存在的任何文件。示例包括图像,字体和声音。 Expo的资产系统是与React Native的集成,以便您可以使用require('path / to / file')引用文件。例如,您可以在React Native中引用静态图像文件以用于Image组件。查看React Native有关静态图像资源的文档以获取更多信息。这种参考静态图像资源的方法expo一起开箱即用。

Expo.Asset()
这个类(class) 代表您的应用中的一项资产。它提供关于资产的元数据(例如其名称和类型)并提供加载资产数据的工具。

  • name

没有扩展名的资产文件的名称。在文件名中也没有@之后的部分(用于指定图像的缩放因子)。

  • type

资产文件名的扩展名

  • hash

资产数据的MD5散列

  • URI

指向远程服务器上资产数据的URI。在运行已发布版本的应用时,这指的是expo资产服务器上expo存储资产的位置。在开发期间从XDE运行应用程序时,此URI指向您的计算机上运行的XDE服务器,并且资产直接从您的计算机提供。

  • localUri

如果资产已下载(通过调用downloadAsync()),则指向设备上包含资产数据的本地文件的file:// URI。

  • width

如果资产是图像,图像数据的宽度除以比例因子。比例因子是文件名后面的数字,如果不存在则为1。

  • height

如果资产是图像,图像数据的高度除以比例因子。比例因子是文件名后面的数字,如果不存在则为1。

  • downloadAsync()

将资产数据下载到设备的缓存目录中的本地文件。一旦返回的承诺没有错误地履行,这个资产的localUri字段指向一个包含资产数据的本地文件。只有当资产的最新本地文件由于较早的下载而不存在时,才会下载该资产。

Expo.Asset.loadAsync(module)
为方便起见,包装Expo.Asset.fromModule(module).downloadAsync的助手。

参数
modules(Array | number) - 一个require('path / to / file')数组。也可以只是一个没有array的模块。

返回
返回一个Promise,解析资产已保存到磁盘的时间。

Expo.Asset.fromModule(module)
返回Expo.Asset实例,表示给定其模块的资产

参数
module(number) - 资产的require('path / to / file')的值

返回
Expo.Asset资产的实例

const imageURI = Expo.Asset.fromModule(require('./images/hello.jpg')).uri;

在运行这段代码时,imageURI会提供远程URI,可以读取images / hello.jpg的内容。 该路径相对于该代码在其中进行评估的源文件被解析。

AppLoading

一个React组件,告诉expo如果它是应用程序中呈现的第一个也是唯一的组件,则应用程序加载屏幕将保持打开状态。 当它被删除时,加载屏幕将消失,您的应用程序将可见。

这非常有用,可让您下载和缓存字体,徽标和图标图像以及其他资产,以确保用户在其开始使用应用程序之前确保用户在其设备上获得最佳体验。

import React from 'react';
import { Image, Text, View } from 'react-native';
import { Asset, AppLoading } from 'expo';export default class App extends React.Component {state = {isReady: false,};render() {if (!this.state.isReady) {return (<AppLoadingstartAsync={this._cacheResourcesAsync}onFinish={() => this.setState({ isReady: true })}onError={console.warn}/>);}return (<View style={{ flex: 1 }}><Image source={require('./assets/images/expo-icon.png')} /><Image source={require('./assets/images/slack-icon.png')} /></View>);}async _cacheResourcesAsync() {const images = [require('./assets/images/expo-icon.png'),require('./assets/images/slack-icon.png'),];const cacheImages = images.map((image) => {return Asset.fromModule(image).downloadAsync();});return Promise.all(cacheImages)}
}

属性

为了向后兼容(推荐使用SDK21),建议使用以下属性,但可选。 如果您不提供任何道具,则负责协调加载资产,处理错误以及更新状态以卸载AppLoading组件。

startAsync(function) - 一个返回Promise的函数,Promise应该在应用程序完成加载所需的数据和资产时解析。

onError(function) - 如果startAsync引发错误,它将被捕获并传递给提供给onError的函数。

onFinish(function) - (如果您提供startAsync,则为必需)。 startAsync解析或拒绝时调用。 这应该用于设置状态并卸载AppLoading组件。

扫码机(BarCodeScanner)

React组件,用于为设备的前置或后置相机取景器渲染取景器,并检测出框架中显示的条形码。 BarCodeScanner在下面使用Camera,因此在使用BarCodeScanner时可以使用任何Camera prop或方法。

需要 Permissions.CAMERA。

import React from 'react';
import { StyleSheet, Text, View } from 'react-native';
import { BarCodeScanner, Permissions } from 'expo';export default class BarcodeScannerExample extends React.Component {state = {hasCameraPermission: null,}async componentWillMount() {const { status } = await Permissions.askAsync(Permissions.CAMERA);this.setState({hasCameraPermission: status === 'granted'});}render() {const { hasCameraPermission } = this.state;if (hasCameraPermission === null) {return <Text>Requesting for camera permission</Text>;} else if (hasCameraPermission === false) {return <Text>No access to camera</Text>;} else {return (<View style={{ flex: 1 }}><BarCodeScanneronBarCodeRead={this._handleBarCodeRead}style={StyleSheet.absoluteFill}/></View>);}}_handleBarCodeRead = ({ type, data }) => {alert(`Bar code with type ${type} and data ${data} has been scanned!`);}
}

github上一个完整的demo

属性

  • onBarCodeRead(function) - 成功读取条形码时调用的回调函数。 该回调提供了一个形状为{type:string,data:string}的对象,其中的类型是指扫描的条形码类型,数据是条形码中编码的信息(在这种情况下是QR码 ,这通常是一个URL)
  • type(string) - 当“(front)前”时,请使用前置摄像头。 当“返回”时,请使用背面照相机。 默认值:'(back)后'。
  • torchMode(string) - 当'on(开)'时,设备上的闪光灯将会打开,'off(关)'时闪光灯会熄灭。 默认为“关闭”。
  • barCodeTypes(array) - 一组条形码类型。 用法:BarCodeScanner.Constants.BarCodeType.<codeType>其中codeType是上面列出的之一。 默认值:所有支持的条码类型。 例如:barCodeTypes = {[BarCodeScanner.Constants.BarCodeType.qr]}

Expo大作战翻译系列结束,expo sdk的部分api没有翻译,大家如果有需要可以浏览官网,本章主要翻译expo sdk 之 Assets,BarCodeScanner,AppLoading大家关注我的微信公众号,这篇文章是否被大家认可,我的衡量标准就是公众号粉丝增长人数。欢迎大家转载,但必须保留本人博客链接!

 

转载于:https://www.cnblogs.com/gdsblog/p/8641076.html

Expo大作战(四十一)【完】--expo sdk 之 Assets,BarCodeScanner,AppLoading相关推荐

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

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

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

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

  3. Expo大作战(二十八)--expo sdk api之Speach(语音文字转换),Segment

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

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

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

  5. Expo大作战(十二)--expo中的自定义样式Custom font,以及expo中的路由RouteNavigation

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

  6. Expo大作战(十八)--expo如何发布成独立应用程序,打包成apk或者ipa,发布到对应应用商店...

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

  7. Expo大作战(十九)--expo打包后,发布分用程序到商店的注意事项

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

  8. 球球大作战四亿人都在玩?玩家回归没有优越感,新玩家游戏被虐,游戏体验感极差!...

    球球大作战,这是一款很火的手游,自己曾经玩了3年的游戏,如今已经厌倦了,所以退游了. 当时任然记得猎魔模式,感觉身边都是人,这游戏身边都有人在玩.后面嘛,由于游戏氛围不太好,合作的人太多,一个人单排这 ...

  9. 计算机:游戏25关,烧脑吃鸡大作战第25关怎么通关 第25关通关技巧介绍

    老王的衣服湿了,快帮帮他这关怎么过?烧脑吃鸡大作战是一款考验脑力的答题游戏,玩家需要充分运用反向思维能力才能答出每关的答案.第25关怎么过呢?怎么才能让老王的衣服不淋到雨呢?还没通过的小伙伴快来看看这 ...

  10. 当我阅读完上千行的游戏球球大作战战斗服务器端源码后...

    注:本文内容已更新至ARTS-Share栏. 这周服务器主程安排给了我一个任务(其实是我在用Go做完了一些小demo后,向主程请示下一步的安排),让我将他用Lua语言写的球球大作战的服务端代码转成Go ...

最新文章

  1. OpenVINO开发教程之八 – 道路分割
  2. 《马哥教育协办GIAC、GOPS顶级技术峰会完美落幕》
  3. 移动Web开发实践——解决position:fixed自适应BUG
  4. UCenter实现同步登陆原理
  5. Ubuntu下firefox启动问题
  6. 企业级精致 Blazor 套件 BootstrapBlazor 介绍
  7. 蓝桥杯2017初赛-9数算式-dfs
  8. 密码学笔记——eval(function(p,a,c,k,e,d) 加密破解
  9. 推荐系统--矩阵分解(4)
  10. vba for wps 7.0_两表数据核对,WPS表格真香
  11. oracle tirger_TPS65130RGETG4_驱动_中文手册(3/10)_TI - 万联芯城
  12. 自定义View之组合式
  13. 【LeetCode 327】区间和的个数
  14. gwas snp 和_Science | 群体研究新思路:De novo + GWAS
  15. 基于matlab的倒立摆设计,基于MATLAB的倒立摆系统控制系统设计与仿真.doc
  16. CCSK云安全认证-M3-管理云计算的安全性和风险
  17. office无法office无法卸载无法安装的解决方法卸载无法安装的解决方法
  18. 现有16张牌:红桃A、Q、4;黑桃J、8、4、2、7、3;草花K、Q、5、4、6;方块A、5.抽出其中一张告诉甲点数,告诉乙花色。甲说,我不知道这张牌,乙说,我知道你不知道
  19. [LOJ6515]「雅礼集训 2018 Day10」贪玩蓝月
  20. WEB前端学习笔记-HTML

热门文章

  1. workbench焊接实例_基于ANSYS Workbench平台和ANSYS经典界面的焊接仿真-工业电子-与非网...
  2. LED背光源行业的产业链升级
  3. spss假设检验_SPSS进行组间差异比较及其两两比较——「杏花开生物医药统计」...
  4. 计算机控制系统在电厂的应用,计算机控制系统在电厂中的应用.doc
  5. rapidminer java,rapidminer 数据导入及几个算子简单应用
  6. csgo删除服务器地图在哪个文件夹,CSGO de_cache地图
  7. 提取地图中道路_准确度93%!人工智能如何完成高精度的地图特征推测?丨城市数据派...
  8. 常用IP扫描工具整理一下
  9. ubuntu 扫描局域网ip
  10. 腾讯云超级播放器实现无直播占位图,有直播播放视频