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

来源:https://www.cnblogs.com/gdsblog/archive/2018/03/21/8620255.html
-Advertisement-
Play Games

簡要:本系列文章講會對expo進行全面的介紹,本人從2017年6月份接觸expo以來,對expo的研究斷斷續續,一路走來將近10個月,廢話不多說,接下來你看到內容,講全部來與官網 我猜去全部機翻+個人修改補充+demo測試的形式,對expo進行一次大補血!歡迎加入expo興趣學習交流群:597732 ...


 

簡要:本系列文章講會對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(1);
}
...

 

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

獲取全局系統屏幕亮度。

返回
用0和1之間的數字解析的Promise,表示當前系統屏幕亮度。


下一張繼續介紹,這一篇主要介紹了:expo sdk api之 GLView,GestureHandler,Font,Fingerprint,DeviceMotion,Brightness歡迎大家關註我的微信公眾號,這篇文章是否被大家認可,我的衡量標準就是公眾號粉絲增長人數。歡迎大家轉載,但必須保留本人博客鏈接!

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在Excel中,我們時常會碰到這樣的欄位(最常見的就是電話號碼),即有純數字的(如沒有帶區號的電話號碼),又有數字和其它字元混合 (如“區號-電 話號碼”)的數據,在導入SQLServer過程中,會發現要麼純數字的數據導過去之後變成了NULL,要麼就是數字和其它字元混合的數據導過去之後變成 了NUL ...
  • 一、使用mysqldump進行備份 註:出現下麵錯誤 解決: 測試遷移進行登錄測試 資料庫鎖表:這個命令執行後所有庫所有表都被鎖定為只讀(如果會話關閉,則自動解鎖)解鎖命令unlock tables 開始備份 將備份傳輸到新資料庫進行恢復 恢複數據 [root@localhost ~]# mysql ...
  • 本文為mariadb官方手冊:SET的譯文。 原文:https://mariadb.com/kb/en/set/我提交到MariaDB官方手冊的譯文:https://mariadb.com/kb/zh-cn/set/ 語法 可以在任意表達式中使用下麵的語法設置用戶變數: 描述 SET語句可以為影響服 ...
  • SELECT ISNULL((2 * 6378.137 * ASIN(SQRT(POWER(SIN((117.223372- ISNULL(Latitude,0) )*PI()/360),2)+COS(117.223372*PI()/180)*COS(117.223372*PI()/180)*POW ...
  • 本文為mariadb官方手冊:LAST_VALUE()的譯文。 原文:https://mariadb.com/kb/en/last_value/我提交到MariaDB官方手冊的譯文:https://mariadb.com/kb/zh-cn/last_value/ 語法 描述 LAST_VALUE() ...
  • 本文為mariadb官方手冊:賦值操作符(:=)的譯文。 原文:https://mariadb.com/kb/en/assignment-operator/ 我提交到MariaDB官方手冊的譯文:https://mariadb.com/kb/zh-cn/assignment-operator/ 語法 ...
  • 前言 我們都知道,hbase是一個很有潛力的NoSql(Not Only Sql),1970年 E.F.Codd's提出的關係模型的論文 "A relational model of data for large shared data banks",這使得數據建模和應用程式編程更加簡單。 通過應用 ...
  • Oracle帳號:[email protected] Oracle密碼:Oracle123 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...