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 的长度单位)。
1273 0
|
移动开发 前端开发
[react-native]宽、高,字体大小屏幕适配工具
最近弄了个react-native的项目,当做学习rn,先放个工具类,后期慢慢更其他东西; 直接上代码,代码也不多; 做到宽、高、字体大小的不同适配(实现很简单,只是为了按不同屏幕大小进行百分比) 'use str...
3296 0
|
7月前
|
设计模式 前端开发 数据可视化
【第4期】一文了解React UI 组件库
【第4期】一文了解React UI 组件库
387 0
|
7月前
|
存储 前端开发 JavaScript
【第34期】一文学会React组件传值
【第34期】一文学会React组件传值
80 0
|
7月前
|
前端开发
【第31期】一文学会用React Hooks组件编写组件
【第31期】一文学会用React Hooks组件编写组件
83 0
|
7月前
|
存储 前端开发 JavaScript
【第29期】一文学会用React类组件编写组件
【第29期】一文学会用React类组件编写组件
83 0
|
7月前
|
前端开发 开发者
【第26期】一文读懂React组件编写方式
【第26期】一文读懂React组件编写方式
70 0
|
7月前
|
资源调度 前端开发 JavaScript
React 的antd-mobile 组件库,嵌套路由
React 的antd-mobile 组件库,嵌套路由
132 0
|
7月前
|
存储 前端开发 中间件
React组件间的通信
React组件间的通信
59 1
|
7月前
|
前端开发 JavaScript API
React组件生命周期
React组件生命周期
131 1

热门文章

最新文章