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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...