react-native-easy-app 详解与使用之(四)屏幕适配

简介: react-native-easy-app 是一款为React Native App快速开发提供基础服务的纯JS库(支持 IOS & Android),特别是在从0到1的项目搭建初期,至少可以为开发者减少大量的工作量

react-native-easy-app 是一款为React Native App快速开发提供基础服务的纯JS库(支持 IOS & Android),特别是在从0到1的项目搭建初期,至少可以为开发者减少30%的工作量。

react-native-easy-app 主要做了这些工作:
1. 对AsyncStorage进行封装,开发者只需几行代码即可实现一个持久化数据管理器。
2. 对fetch进行封装,使得开发者只需关注当前App的前后台交互逻辑和协议,定义好参数设置及解析逻辑即可。
3. 重新封装了RN的View、Text、Image、FlatList 使用得这些控件在适当的时候支持事件或支持icon与文本,能有效减少布局中的嵌套逻辑。
4. 通过设置一个屏幕参考尺寸,重置XView、XText、XImage的尺寸,实现自动多屏适配

可能有人觉得,RN的适配一般不都是根据目标屏幕的尺寸对当前UI尺寸进行一定比例的缩放么,直接定义一个获取缩放比例的方法不就可以了么?

一千个人心中,有一千个哈姆雷特,也许我的封装思路能给你带来不一样的启发也未可知呢?

UI多屏幕适配

RN平台默认的尺寸就是不带单位的,使用的是设备独立像素,但由于手机的尺寸也越来越多,比如说相同尺寸,像素密不同结果导致UI的物理尺寸也不同,所以通常来说,我们们需要根据屏幕的尺寸对UI的尺寸进行一定比例的缩放。

但UI的尺寸属性太多了,每次都调用相应的尺寸比例方法去计算,不仅看着代码不雅观而且代码量也明显增多,那有没有更好的办法呢?

当前开发库的实现思路是,通过XView、XText、XImage的重定义,将传入组件的style属性做一次重置(将所有涉及尺寸的属性值重置为乘以缩放比例后的值)。至于UI的尺寸属性,在React Native源代码中就可以找到(目前以白名单的形式定义)。这样,在使用以上X系列UI组件的时候不需要做任何特别处理,即可自动实现多屏幕适配。

当然,要想X系列组件支持的前提还是:得设置一个参考屏幕尺寸(设计同学做UI的时候使用的参考屏幕尺寸),代码如下:

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

我们找个UI看看适配前后的区别(sample项目的列表页面,适配前后):

5s_iphoneX_iphone_Xs_Max_before

5s_iphoneX_iphone_Xs_Max_after

可以看到,适配后在5S屏幕上UI比较明显(相应的UI尺寸缩小了一些)。
UI布局页面适配如下(sample项目的UI组件页面,适配前后):

5s_iphoneX_iphone_Xs_Max_UI_before

5s_iphoneX_iphone_Xs_Max_UI_after

依然在5S上表现比较明显,适配前UI组件高、宽不太协调,特别是Image组件相对比较拥挤,但适配后就自然多了。在Xs Max上,UI组件由之前偏小,后适配后,相对应的都放大了也显得自然了(大屏、高分辨率屏幕上UI尺寸太小看着比较吃力)

可能有同学想,X系列组件都做了屏幕适配但一些特别情况下,可能不需要作适配怎么办,比如说外层容器组件(有的时候会设置一个定值),这时候有两种办法:

  1. 改用系统原生组件
  2. 设置X系列组件属性 raw = {true},设置了此属性,当前UI尺寸就不会做任何缩放

所以当大家需要对app的用UI做多屏适配的情况下,尽可能多的使用X系列组件就行了(记得设置参考屏幕哦)

想进一步了解,请移步至 npm 或github查看 react-native-easy-app,有源码及使用示例,待大家一探究竟,欢迎朋友们 Star!

目录
相关文章
|
Android开发 编解码 API
Android APP全方位性能调优之屏幕适配终结者
优点 1. 无侵入性 首先科普下 Android 中的一个长度单位:pt,它表示一个点,是屏幕的物理尺寸,其大小为 1 英寸的 1 / 72,也就是 72pt 等于 1 英寸(其实 Android 中还有比较少见的 in 和 mm 的长度单位)。
1267 0
|
移动开发 前端开发
[react-native]宽、高,字体大小屏幕适配工具
最近弄了个react-native的项目,当做学习rn,先放个工具类,后期慢慢更其他东西; 直接上代码,代码也不多; 做到宽、高、字体大小的不同适配(实现很简单,只是为了按不同屏幕大小进行百分比) 'use str...
3282 0
|
1月前
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
477 7
|
1月前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
528 1
|
17天前
|
小程序 数据挖掘 UED
开发1个上门家政小程序APP系统,都有哪些功能?
在快节奏的现代生活中,家政服务已成为许多家庭的必需品。针对传统家政服务存在的问题,如服务质量不稳定、价格不透明等,我们历时两年开发了一套全新的上门家政系统。该系统通过完善信用体系、提供奖励机制、优化复购体验、多渠道推广和多样化盈利模式,解决了私单、复购、推广和盈利四大痛点,全面提升了服务质量和用户体验,旨在成为家政行业的领导者。
|
1月前
|
JavaScript 前端开发 小程序
uniapp一个人开发APP关键步骤和考虑因素
uniapp一个人开发APP关键步骤和考虑因素
122 1
uniapp一个人开发APP关键步骤和考虑因素
|
1月前
|
JavaScript 前端开发 UED
Vue与uni-app开发中通过@font-face巧妙引入自定义字体
Vue与uni-app开发中通过@font-face巧妙引入自定义字体
71 9
|
1月前
|
缓存 小程序 索引
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
189 1
|
14天前
|
机器人
布谷直播App系统源码开发之后台管理功能详解
直播系统开发搭建管理后台功能详解!
|
1月前
|
小程序 JavaScript API
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
这篇文章介绍了如何在uni-app和微信小程序中实现将图片保存到用户手机相册的功能。
535 0
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机