嘔血總結React Native 這裡有你最想要的(react native進階)

来源:http://www.cnblogs.com/gdsblog/archive/2017/08/22/7414125.html
-Advertisement-
Play Games

一、前沿||潛心修心,學無止盡。生活如此,coding亦然。本人鳥窩,一隻正在求職的鳥。聯繫我可以直接微信:jkxx123321 二、項目總結 **||**文章參考資料:1. http://blog.csdn.net/u011272795/article/details/73824558 2.htt ...





一、前沿||潛心修心,學無止盡。生活如此,coding亦然。本人鳥窩,一隻正在求職的鳥。聯繫我可以直接微信:jkxx123321

二、項目總結

  **||**文章參考資料:1.  http://blog.csdn.net/u011272795/article/details/73824558   

           2.http://blog.csdn.net/qq_25280063/article/details/52294221

 1)px2dp詳細總結

現在的手機品牌和型號越來越多,導致我們平時寫佈局的時候會在個不同的移動設備上顯示的效果不同,

比如我們的設計稿一個View的大小是300px,如果直接寫300px,可能在當前設備顯示正常,但到了其他設備可能就會偏小或者偏大,這就需要我們對屏幕進行適配。Android原生的話有自己的適配規則,可以根據不同的尺寸建立不同的文件夾,系統會根據當前的設備尺寸取對應的大小的佈局。而RN本身並沒有適配規則,而原生的又比較反鎖,這就需要我們自己去對屏幕進行適配。


先看一下剛出爐的屏幕適配工具類:

 

/**
 * Created by zhuoy on 2017/6/27.
 * 屏幕工具類
 * ui設計基準,iphone 6
 * width:750
 * height:1334
 */

/*
 設備的像素密度,例如:
 PixelRatio.get() === 1          mdpi Android 設備 (160 dpi)
 PixelRatio.get() === 1.5        hdpi Android 設備 (240 dpi)
 PixelRatio.get() === 2          iPhone 4, 4S,iPhone 5, 5c, 5s,iPhone 6,xhdpi Android 設備 (320 dpi)
 PixelRatio.get() === 3          iPhone 6 plus , xxhdpi Android 設備 (480 dpi)
 PixelRatio.get() === 3.5        Nexus 6       */

import {
    Dimensions,
    PixelRatio,
} from 'react-native';


export const deviceWidth = Dimensions.get('window').width;      //設備的寬度
export const deviceHeight = Dimensions.get('window').height;    //設備的高度
let fontScale = PixelRatio.getFontScale();                      //返回字體大小縮放比例

let pixelRatio = PixelRatio.get();      //當前設備的像素密度
const defaultPixel = 2;                           //iphone6的像素密度
//px轉換成dp
const w2 = 750 / defaultPixel;
const h2 = 1334 / defaultPixel;
const scale = Math.min(deviceHeight / h2, deviceWidth / w2);   //獲取縮放比例
/**
 * 設置text為sp
 * @param size sp
 * return number dp
 */
export function setSpText(size: number) {
    size = Math.round((size * scale + 0.5) * pixelRatio / fontScale);
    return size / defaultPixel;
}

export function scaleSize(size: number) {

    size = Math.round(size * scale + 0.5);
    return size / defaultPixel;
}

 

因為一般的設計稿都是以iphone6為基礎來設計的,所以這裡以iPhone6為基礎寫這個工具類,

當然如果你的不是,可以在上面更改,defaultPixelRatio改成你用的設備像素就好了。


我們這裡對文字和尺寸進行了適配。

看一下同樣的代碼在不同手機的顯示效果:

代碼:

 

export default class Home extends React.Component {

    render() {

        return (
            <View>
                <Text style={{fontSize: 30}}>沒適配,本機像素:{PixelRatio.get()}</Text>
                <Text style={{fontSize: ScreenUtil.setSpText(30)}}>已適配</Text>
                <View style={{
                    height: 50, width: 240, backgroundColor: 'green'
                }}></View>
                <View style={{
                    height: ScreenUtil.scaleSize(50),
                    width: ScreenUtil.scaleSize(240),
                    backgroundColor: 'red'
                }}></View>

            </View>
        )
    }

}

 

這裡,我用了像素為1.5和2.65的2個安卓設備來進行展示:

如圖:左側是大屏,右側是小屏手機。

第一行都是大小為30px的文字,因為屏幕本身的原因,導致看起來可能大小不同,但其實這是相同的大小文字。

而第二行我們適配過的看以看到,在大屏上(相對於iPhone6),30px進行了放大,而小屏上則進行了縮小的操作。

這樣,在不同設備上,就會顯示合適的字體大小。

 


下麵的View也是一樣的道理,都進行了不同程度的縮小。

該文章持續跟新...喜歡的請關註...

 


 


 

持續更新

今天向大家介紹一個組件(我覺得還不錯的組件,感謝情書哥為我找到)

參考資料:https://github.com/nicinabox/react-native-line-gauge

 

對這個第三方如果有需求的,請於我溝通,聯繫方式文章首頁給出。

該文章持續跟新...喜歡的請關註...


 

 

 

 

 

 

 

 

 

 


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

-Advertisement-
Play Games
更多相關文章
  • 相比iOS平臺的適配,Android的適配工作更繁重,情況也更複雜。因為,相比相對比較封閉的蘋果,Android無論是硬體和軟體們都是開放的,所以市場上Android設備種類更多。 ...
  • 由於工作要求最近在使用GridView完成圖片的批量上傳功能,我的例子當中包含仿微信圖片上傳、拍照、本地選擇、相片裁剪等功能,如果有需要的朋友可以看一下,希望我的實際經驗能對您有所幫助。 直接上圖,下麵的圖片就是點擊“加號”後彈出的對話框,通過對話框可以根據自己需求進行相片選擇。 項目結構: 下麵直 ...
  • 最近學習瞭如何在Android 6.0上添加一個系統服務,APP如何通過新增的系統服務訪問底層驅動。在這學習過程中,收穫頗多,並結合學習了《Embeded Android》--Karim Yaghmour 一書中的Appendix B. Adding Support For New Hardware ...
  • 代碼很簡單,一看便知。這裡為順時針,若想要逆時針,clockwise改為0,還需更改起始角度和終點角度。 源碼地址:https://github.com/LfyDragon/CountDown 直接上代碼:- (void)drawRect:(CGRect)rect { ...
  • activity_main.xml中的配置 MainActivity中代碼: ...
  • 期初第一次做藍牙開鎖的時候遇到的最尖銳的問題就是ios設備如何對獲取的廣播信息進行讀取,大概用了4中方式,都無法解決,最後不得不求助官方人員。給了一個方法,大家可以參考。在此附圖: 由於mac地址是65::43:53這種形式,所以截取方式就如上 ...
  • 一,效果圖。 二,代碼。 ViewController.m ...
  • 一、前言 在開發過程中,Android可能會打出來很多的包,用於標識不同的商店下載量。原來覺得蘋果只有一個商店:AppStore,如何做出不同來源的統計呢?本篇文章就是告訴大家如何做不同渠道來源統計。 二、正文 先看一下蘋果自家統計到的數據: 這個是在沒有對下載鏈接做任何處理的情況下在itunesc ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...