react-native-easy-app 詳解與使用之(四)屏幕適配

react-native-easy-app 是一款為React Native App快速開發(fā)提供基礎(chǔ)服務(wù)的純JS庫(支持 IOS & Android)瘟滨,特別是在從0到1的項目搭建初期弥锄,至少可以為開發(fā)者減少30%的工作量柠偶。

react-native-easy-app 主要做了這些工作:
1. 對AsyncStorage進(jìn)行封裝惫恼,開發(fā)者只需幾行代碼即可實現(xiàn)一個持久化數(shù)據(jù)管理器泣矛。
2. 對fetch進(jìn)行封裝真慢,使得開發(fā)者只需關(guān)注當(dāng)前App的前后臺交互邏輯和協(xié)議灾挨,定義好參數(shù)設(shè)置及解析邏輯即可少孝。
3. 重新封裝了RN的View继低、Text、Image稍走、FlatList 使用得這些控件在適當(dāng)?shù)臅r候支持事件或支持icon與文本袁翁,能有效減少布局中的嵌套邏輯。
4. 通過設(shè)置一個屏幕參考尺寸婿脸,重置XView粱胜、XText、XImage的尺寸狐树,實現(xiàn)自動多屏適配

可能有人覺得焙压,RN的適配一般不都是根據(jù)目標(biāo)屏幕的尺寸對當(dāng)前UI尺寸進(jìn)行一定比例的縮放么,直接定義一個獲取縮放比例的方法不就可以了么抑钟?

一千個人心中涯曲,有一千個哈姆雷特,也許我的封裝思路能給你帶來不一樣的啟發(fā)也未可知呢在塔?

UI多屏幕適配

RN平臺默認(rèn)的尺寸就是不帶單位的幻件,使用的是設(shè)備獨立像素,但由于手機的尺寸也越來越多蛔溃,比如說相同尺寸绰沥,像素密不同結(jié)果導(dǎo)致UI的物理尺寸也不同,所以通常來說城榛,我們們需要根據(jù)屏幕的尺寸對UI的尺寸進(jìn)行一定比例的縮放揪利。

但UI的尺寸屬性太多了,每次都調(diào)用相應(yīng)的尺寸比例方法去計算狠持,不僅看著代碼不雅觀而且代碼量也明顯增多疟位,那有沒有更好的辦法呢?

當(dāng)前開發(fā)庫的實現(xiàn)思路是喘垂,通過XView甜刻、XText绍撞、XImage的重定義,將傳入組件的style屬性做一次重置(將所有涉及尺寸的屬性值重置為乘以縮放比例后的值)得院。至于UI的尺寸屬性傻铣,在React Native源代碼中就可以找到(目前以白名單的形式定義)。這樣祥绞,在使用以上X系列UI組件的時候不需要做任何特別處理非洲,即可自動實現(xiàn)多屏幕適配。

當(dāng)然蜕径,要想X系列組件支持的前提還是:得設(shè)置一個參考屏幕尺寸(設(shè)計同學(xué)做UI的時候使用的參考屏幕尺寸)两踏,代碼如下:

XWidget.initReferenceScreen(375, 667); //iphone 6 屏幕

我們找個UI看看適配前后的區(qū)別(sample項目的列表頁面,適配前后):

5s_iphoneX_iphone Xs Max_before.png
5s_iphoneX_iphone Xs Max_after.png

可以看到兜喻,適配后在5S屏幕上UI比較明顯(相應(yīng)的UI尺寸縮小了一些)梦染。
UI布局頁面適配如下(sample項目的UI組件頁面,適配前后):

5s_iphoneX_iphone Xs Max_UI_before.png
5s_iphoneX_iphone Xs Max_UI_after.png

依然在5S上表現(xiàn)比較明顯朴皆,適配前UI組件高帕识、寬不太協(xié)調(diào),特別是Image組件相對比較擁擠遂铡,但適配后就自然多了肮疗。在Xs Max上,UI組件由之前偏小扒接,后適配后族吻,相對應(yīng)的都放大了也顯得自然了(大屏、高分辨率屏幕上UI尺寸太小看著比較吃力)

可能有同學(xué)想珠增,X系列組件都做了屏幕適配但一些特別情況下超歌,可能不需要作適配怎么辦,比如說外層容器組件(有的時候會設(shè)置一個定值)蒂教,這時候有兩種辦法:

  1. 改用系統(tǒng)原生組件
  2. 設(shè)置X系列組件屬性 raw = {true}巍举,設(shè)置了此屬性,當(dāng)前UI尺寸就不會做任何縮放

**所以當(dāng)大家需要對app的用UI做多屏適配的情況下凝垛,盡可能多的使用X系列組件就行了(記得設(shè)置參考屏幕哦) **

想進(jìn)一步了解懊悯,請移步至 npm 或github查看 react-native-easy-app,有源碼及使用示例梦皮,待大家一探究竟炭分,歡迎朋友們 Star!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末剑肯,一起剝皮案震驚了整個濱河市捧毛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖呀忧,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件师痕,死亡現(xiàn)場離奇詭異,居然都是意外死亡而账,警方通過查閱死者的電腦和手機胰坟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來泞辐,“玉大人笔横,你說我怎么就攤上這事「篮穑” “怎么了狠裹?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長汽烦。 經(jīng)常有香客問我,道長莉御,這世上最難降的妖魔是什么撇吞? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮礁叔,結(jié)果婚禮上牍颈,老公的妹妹穿的比我還像新娘。我一直安慰自己琅关,他們只是感情好煮岁,可當(dāng)我...
    茶點故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著涣易,像睡著了一般画机。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上新症,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天步氏,我揣著相機與錄音,去河邊找鬼徒爹。 笑死荚醒,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的隆嗅。 我是一名探鬼主播界阁,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼胖喳!你這毒婦竟也來了泡躯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎精续,沒想到半個月后坝锰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡重付,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年顷级,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片确垫。...
    茶點故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡弓颈,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出删掀,到底是詐尸還是另有隱情翔冀,我是刑警寧澤,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布披泪,位于F島的核電站纤子,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏款票。R本人自食惡果不足惜控硼,卻給世界環(huán)境...
    茶點故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望艾少。 院中可真熱鬧卡乾,春花似錦、人聲如沸缚够。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽将鸵。三九已至界赔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間雏吭,已是汗流浹背埂伦。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留思恐,地道東北人沾谜。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像胀莹,于是被迫代替她去往敵國和親基跑。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,955評論 2 355

推薦閱讀更多精彩內(nèi)容