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

时间:2022-08-27 19:38:39

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

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


GLView

Expo.GLView()
一个充当OpenGL ES渲染目标的视图。在安装时,会创建一个OpenGL ES上下文。其绘图缓冲区显示为每个框架的查看内容。

除布局和触摸处理的常规视图支持外,还有以下支持的道具:

onContextCreate创建OpenGL ES上下文时将调用的函数。该函数传递一个具有WebGLRenderingContext接口的参数gl。

msaaSamples GLView可以启用iOS的内置多重采样。此道具指定要使用的样本数。默认情况下这是4.将此设置为0会关闭多重采样。在Android上,这被忽略。

高级API(High-level APIs)

由于WebGL API相当低级,因此使用底层的GLView渲染更高级的图形API会很有帮助。以下库集成了常用的图形API:

任何期望WebGLRenderingContext的WebGL支持库都可以使用。有些时候,这样的库会假设一个Web JavaScript上下文(例如假设文档)。通常这是为了资源加载或事件处理,主渲染逻辑仍然只使用纯WebGL。所以这些库通常仍然可以使用两种解决方法。上述世expo特定的集成包括一些流行类库的解决方法。

WebGL API

一旦组件被挂载并创建了OpenGL ES上下文,通过onContextCreate prop接收到的gl对象就成为OpenGL ES上下文的接口,从而提供WebGL API。它类似于WebGL 1规范中的WebGLRenderingContext。还有一个gl.endFrameEXP()方法,通知上下文当前帧已准备好呈现。这与其他OpenGL平台中的“交换缓冲区”API调用类似。

以下WebGLRenderContext方法当前未实现:

  • getFramebufferAttachmentParameter()
  • getRenderbufferParameter()
  • compressedTexImage2D()
  • compressedTexSubImage2D()
  • getTexParameter()
  • getUniform()
  • getVertexAttrib()
  • getVertexAttribOffset()

texImage2D()的像素参数必须为null,带有像素数据的ArrayBuffer或形式为{localUri}的对象,其中localUri是设备文件系统中图像的file:// URI。因此一个Expo.Asset对象可以使用一次.downloadAsync()已经被调用(并完成)来获取资源。

出于效率原因,方法的当前实现不会对它们的参数执行类型或边界检查。所以,传递无效参数可能会导致本机崩溃。我们计划更新API以在即将推出的SDK版本中执行参数检查。目前错误检查的优先级很低,因为引擎通常不依赖于OpenGL API来执行参数检查,否则,通过底层OpenGL ES实现执行的检查通常就足够了。

GestureHandler

用于处理复杂手势的API。 从该项目的自述文件:

该库提供了一个API,可以提供移动平台特定的触摸和手势处理和识别的本机功能。 它允许定义在本地线程中100%运行的复杂手势处理和识别逻辑,因此具有确定性。

该API目前在DangerZone命名空间下可用,因为它基于快速改进的react-native-gesture-handler。 我们建议查看项目的GitHub存储库上的README文档和用法示例。 在Expo或ExpoKit中使用此API不需要本机设置(No native setup is required for using this API within Expo or ExpoKit)。

Font

允许从Web加载字体并在React Native组件中使用它们。 请参阅使用自定义字体指南中的更多详细使用信息

用法
Expo.Font.loadAsync(object)

Expo.Font.loadAsync()一次加载多个字体的便捷形式。

参数
map(object) - 一个名字的映射,需要在Expo.Font.loadAsync()中声明。

Expo.Font.loadAsync({
Montserrat: require('./assets/fonts/Montserrat.ttf'),
'Montserrat-SemiBold': require('./assets/fontsMontserrat-SemiBold.ttf'),
});

返回
不返回任何内容,只是等待所有字体可用。

指纹(Fingerprint)

使用TouchID(iOS)或指纹API(Android)通过指纹扫描对用户进行身份验证。

Expo.Fingerprint.hasHardwareAsync()
确定指纹扫描仪在设备上是否可用。

返回
指示指纹扫描仪在此设备上是否可用的布尔值。

Expo.Fingerprint.isEnrolledAsync()
确定设备是否保存了用于身份验证的指纹。

返回
一个布尔值,指示设备是否保存了用于身份验证的指纹。

Expo.Fingerprint.authenticateAsync()
尝试通过指纹进行身份验证。 Android - 在Android上使用指纹模块时,您需要提供UI组件来提示用户扫描指纹,因为操作系统没有默认警报。

参数
(仅适用于iOS)promptMessage(string)与TouchID提示符一起显示的消息。

返回
包含成功的对象,指示验证是否成功的布尔值以及在验证失败的情况下包含错误代码的错误。

Expo.Fingerprint.cancelAuthenticate() - (仅限Android)
取消指纹认证流程。

DeviceMotion

访问设备运动和方向传感器。所有的数据都是通过一个设备运行的三个轴来表示的。根据纵向:X从左到右,Y从下到上,Z从后到前垂直穿过屏幕。

Expo.DangerZone.DeviceMotion.addListener(listener)
订阅DeviceMotion更新。

参数
listener (function)  - 当DeviceMotion更新可用时调用的回调。当被调用时,监听器被提供一个参数,它是一个包含以下字段的对象:

  • acceleration (object) 加速度(对象) - 三轴上的设备加速度,作为具有x,y,z键的对象。用m / s2表示。
  • accelerationIncludingGravity (object)  - 设备加速时,三轴上的重力作为具有x,y,z键的对象。用m / s2表示。
  • rotation (object)  - 设备在空间中的方向,作为具有alpha,beta,gamma键的对象,其中alpha用于围绕Z轴旋转,beta用于X轴旋转,gamma用于Y轴旋转。
  • rotationRate(object) - 设备围绕其每个轴的旋转速率,作为具有alpha,beta,gamma键的对象,其中alpha围绕Z轴,beta围绕X轴,gamma围绕Y轴。
  • orientation (number) - 基于屏幕旋转的设备方向。值为0(人像),90(右侧风景),180(上下颠倒),-90(左侧风景)。

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

Expo.DangerZone.DeviceMotion.removeAllListeners()
删除所有听众。

Expo.DangerZone.DeviceMotion.setUpdateInterval(intervalMs)
订阅DeviceMotion更新。

参数

intervalMs(number)DeviceMotion更新之间的期望时间间隔(以毫秒为单位)

亮度(Brightness)

获取和设置屏幕亮度的API。

Expo.Brightness.setBrightnessAsync(brightnessValue)

设置屏幕亮度。

参数
brightnessValue(number) - 介于0和1之间的数字,表示所需的屏幕亮度。

Expo.Brightness.getBrightnessAsync()

获取屏幕亮度。

返回
用0和1之间的数字解析的Promise,代表当前的屏幕亮度。

Expo.Brightness.setSystemBrightnessAsync(brightnessValue)
警告:此方法是实验性的。

设置全局系统屏幕亮度,需要Android上的WRITE_SETTINGS权限。

参数
brightnessValue(number) - 介于0和1之间的数字,表示所需的屏幕亮度。

await Permissions.askAsync(Permissions.SYSTEM_BRIGHTNESS);

const { status } = await Permissions.getAsync(Permissions.SYSTEM_BRIGHTNESS);
if (status === 'granted') {
Expo.Brightness.setSystemBrightnessAsync();
}
...

Expo.Brightness.getSystemBrightnessAsync()
警告:此方法是实验性的。

获取全局系统屏幕亮度。

返回
用0和1之间的数字解析的Promise,表示当前系统屏幕亮度。


下一张继续介绍,这一篇主要介绍了:expo sdk api之 GLView,GestureHandler,Font,Fingerprint,DeviceMotion,Brightness欢迎大家关注我的微信公众号,这篇文章是否被大家认可,我的衡量标准就是公众号粉丝增长人数。欢迎大家转载,但必须保留本人博客链接!

 

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

Expo大作战(三十七)--expo sdk api之 GLView,GestureHandler,Font,Fingerprint,DeviceMotion,Brightness的更多相关文章

  1. Expo大作战(三十三)--expo sdk api之MapView(地图),MailComposer(磁力传感计),Lottie(动画)

    简要:本系列文章讲会对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 sdk api之Util(expo自带工具类),tackSnapshotAsync,Svg,SQLite

    简要:本系列文章讲会对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. CSS 布局

    近日开发中,总感觉页面布局方面力不从心.以前也曾学过这方面的内容,但是不够系统,因此我打算整理一下. 在web 页面中一般有 table 和 css+div 两种布局方式. 其中css+div 又分为 ...

  2. thinkphp怎么实现图片验证码

    1.控制器 function verify() { ob_clean();//丢弃输出缓冲区中的内容 $config = array( 'fontSize' => 20, // 字体大小 'le ...

  3. 苹果微信下载 iOS微信各版本列表

    微信在不断地更新迭代,ios微信下载点击这里立即开始(手机电脑都可以,电脑端要安装iTunes),每个版本都放出一些新的功能或修复相关错误,详情可以点击下面的版本链接进行查看.(这里有Android微 ...

  4. Game02 最新版本2.0.0

    Game02发布转站于此,欢迎大家下载.... 简介: Game02是由ImGenius开发的一款即时在线小游戏.玩法简单,易于上手,主要靠技术,不会出现不要脸的充值等内容. 操控方法:W和A左右移动 ...

  5. redis集群同步迁移方法(二):通过redis-migrate-tool实现

    前篇介绍的redis replication方法,操作步骤多,而且容易出错.在git上看到一些开源工具也能实现同步迁移功能,而且步骤简单,比如redis-port,redis-migrate-tool ...

  6. 教程-Delphi多线程数据库查询(ADO)

    ADO多线程数据库查询通常会出现3个问题: 1.CoInitialize 没有调用(CoInitialize was not called):所以,在使用任何dbGo对象前,必须手 调用CoIniti ...

  7. SQLDataSet中执行DDL语句

    在SQLDataSet中执行我们输入的DDL语句,并观察执行结果. 这里为了省输入的时间,从先输好的记事本中复制的SQL语句.效果图: ******************************** ...

  8. jdk版本查看,以及java -version 和JAVA_HOME不一致问题

    一.jdk版本查看及位数查看 在cmd进入命令行窗口,输入java -version 可以查看安装的jdk版本,如图: 当有64-bit时代表是64位jdk,如果没有则默认是32位的. 二.java ...

  9. django(权限、认证)系统——User模型

    在Django的世界中,在权限管理中有内置的Authentication系统.用来管理帐户,组,和许可.还有基于cookie的用户session.这篇blog主要用来探讨这套内置的Authentica ...

  10. 高校表白APP-冲刺第二天

    今天进行了第二次会议. 一.任务: 昨日任务完成基本登录注册修改页面布局. 今日任务完成登录界面的基本框架. 明日任务登录修改注册跳转,解决真机运行闪退. 二.遇到的困难: 登录界面按钮布局位置,输入 ...