Expo大作戰(三十三)--expo sdk api之MapView(地圖),MailComposer(磁力感測計),Lottie(動畫)

来源:https://www.cnblogs.com/gdsblog/archive/2018/03/20/8613011.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。


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: 1 }}
        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: 400,
              height: 400,
              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: 1,
  },
  buttonContainer: {
    paddingTop: 20,
  },
});

 

導入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(動畫)歡迎大家關註我的微信公眾號,這篇文章是否被大家認可,我的衡量標準就是公眾號粉絲增長人數。歡迎大家轉載,但必須保留本人博客鏈接!

 

 


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

-Advertisement-
Play Games
更多相關文章
  • 一、安裝環境 MySQL在5.6之前和之後的安裝方式是不一樣的。 自己整理的mysql安裝,主從配置基於這篇安裝:http://www.cnblogs.com/cypress/p/8608496.html 首先保證3306埠的可用,或者關閉防火牆,兩台機子可以互相ping 二、Master的配置 ...
  • 本文為mariadb官方手冊:SET PASSWORD的譯文。 原文:https://mariadb.com/kb/en/library/set-password/我提交到MariaDB官方手冊的譯文:https://mariadb.com/kb/zh-cn/set-password/ 語法 描述 ...
  • 需求:開發要求導入某天某個表的數據,而我們的數據是全庫備份 例如: 從newbei_2017-08-31_402793782.tar.bz2中恢復表:bei_table 的數據 一、備份策略 備份全庫的數據:newbei 二、解壓 tar xvf newbei_2017-08-31_40279378 ...
  • 在安裝MySQL時總會出現一些小問題,導致安裝進度過慢,在百度搜加上自己實際操作,總結的安裝方式,共同進步 一、安裝mysql 1、下載安裝包使用wget命令安裝 2、卸載自帶的Mariadb 3、刪除etc目錄下的my.cnf 4、執行以下命令來創建mysql用戶組 5、執行以下命令來創建一個用戶 ...
  • 背景:(測試環境)只有兩台機器一臺namenode一臺namenode,但集群只有一個結點感覺不出來效果,在namenode上掛一個datanode就有兩個節點,弊端見最後 操作非常簡單(添加獨立節點參照:http://www.cnblogs.com/pu20065226/p/8493316.htm ...
  • imageNamed:方法創建UIImage對象,這些對象不再使用的時候 會放到應用的預設自動回收池中,而不是當前的事件迴圈的自動回收池中,這樣的對象占用的記憶體只有在應用結束的時候 才會回收。如果用這種方法存放了很多在圖的話,你會發現應用會很快將整個記憶體好緊。另外,因為他們是自動回收的對象,所以,即 ...
  • 簡要:本系列文章講會對expo進行全面的介紹,本人從2017年6月份接觸expo以來,對expo的研究斷斷續續,一路走來將近10個月,廢話不多說,接下來你看到內容,講全部來與官網 我猜去全部機翻+個人修改補充+demo測試的形式,對expo進行一次大補血!歡迎加入expo興趣學習交流群:597732 ...
  • 一、前言 最近由於公司同事離職,頂替這位同事從事手機App的研發工作,BIM數據平臺部門採用的是HBuilder作為手機App的製作環境。本篇介紹我是如何將HBuilder的Release包發佈至App Store的。 二、內容 1. 首先登錄Apple Developer網站 2. 點擊iTune ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...