详解React Native 屏幕适配(炒鸡简单的方法)


Posted in Javascript onJune 11, 2018

前言

React Native 可以开发 ios 和 android 的 app,在开发过程中,势必会遇上屏幕适配(ios 好几种尺寸的屏幕以及 android 各种尺寸的屏幕)的问题,下面介绍一种几行代码搞定 RN 适配的方法!

屏幕适配的前置知识

RN 中的尺寸单位为 dp,而设计稿中的单位为 px

原理

虽然单位不同,但是元素所占屏幕宽度的比例是相同的
利用元素所占屏幕比例不变的特性,来将 px 转为 dp(这样实现屏幕适配的话,在不同尺寸的屏幕下,元素会等比放大或缩小)

公式如下:

设计稿元素宽度(px) / 设计稿总宽度(px) = 元素的宽度(dp) / 屏幕的总宽度(dp)

我们要求的就是 元素的宽度(dp)

可以得出:

元素的宽度(dp) = 设计稿元素宽度(px)* 屏幕的总宽度(dp) / 设计稿总宽度(px)

代码实现

// util.js
import { Dimensions } from 'react-native';

// 设备宽度,单位 dp
const deviceWidthDp = Dimensions.get('window').width;

// 设计稿宽度(这里为640px),单位 px
const uiWidthPx = 640;

// px 转 dp(设计稿中的 px 转 rn 中的 dp)
export const pTd = (uiElePx) => {
 return uiElePx * deviceWidthDp / uiWidthPx;
}

使用

每次给元素设置尺寸样式时,使用 pTd() 函数即可(传入设计稿中元素的实际 px)。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
IE、FF、Chrome浏览器中的JS差异介绍
Aug 13 Javascript
jQuery中delegate与on的用法与区别示例介绍
Dec 20 Javascript
通过js获取上传的图片信息(临时保存路径,名称,大小)然后通过ajax传递给后端的方法
Oct 01 Javascript
基于jQuery实现返回顶部实例代码
Jan 01 Javascript
创建一般js对象的几种方式
Jan 19 Javascript
vue实现一个移动端屏蔽滑动的遮罩层实例
Jun 08 Javascript
Vue数组更新及过滤排序功能
Aug 10 Javascript
vue中接口域名配置为全局变量的实现方法
Sep 20 Javascript
ES6知识点整理之对象解构赋值应用示例
Apr 17 Javascript
element-ui组件中input等的change事件中传递自定义参数
May 22 Javascript
微信小程序发布新版本时自动提示用户更新的方法
Jun 07 Javascript
js new Date()实例测试
Oct 31 Javascript
vue非父子组件通信问题及解决方法
Jun 11 #Javascript
Angular如何在应用初始化时运行代码详解
Jun 11 #Javascript
详解.vue文件解析的实现
Jun 11 #Javascript
vue filters的使用详解
Jun 11 #Javascript
Vue组件全局注册实现警告框的实例详解
Jun 11 #Javascript
jQuery实现的页面详情展开收起功能示例
Jun 11 #jQuery
Node.js中的cluster模块深入解读
Jun 11 #Javascript
You might like
第十二节 类的自动加载 [12]
2006/10/09 PHP
PHP+MYSQL开发工具及资源收藏
2007/01/02 PHP
php通过ksort()函数给关联数组按照键排序的方法
2015/03/18 PHP
php使用GD实现颜色渐变实例
2015/06/02 PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
2016/09/11 PHP
PHP使用Redis长连接的方法详解
2018/02/12 PHP
splice slice区别
2006/10/09 Javascript
jquery中使用ajax获取远程页面信息
2011/11/13 Javascript
JQuery一种取同级值的方式(比如你在GridView中)
2012/03/15 Javascript
深入理解JSON数据源格式
2014/01/10 Javascript
js与C#进行时间戳转换
2014/11/14 Javascript
JavaScript判断是否为数组的3种方法及效率比较
2015/04/01 Javascript
基于jQuery实现select下拉选择可输入附源码下载
2016/02/03 Javascript
原生js实现中奖信息无间隙滚动效果
2017/01/18 Javascript
ComboBox(下拉列表框)通过url加载调用远程数据的方法
2017/08/06 Javascript
html中通过JS获取JSON数据并加载的方法
2017/11/30 Javascript
判断jQuery是否加载完成,没完成继续判断的解决方法
2017/12/06 jQuery
微信小程序如何实现全局重新加载
2019/06/05 Javascript
python选择排序算法实例总结
2015/07/01 Python
Python3.2模拟实现webqq登录
2016/02/15 Python
Python Pywavelet 小波阈值实例
2019/01/09 Python
如何在python中写hive脚本
2019/11/08 Python
python wxpython 实现界面跳转功能
2019/12/17 Python
Python3.7.0 Shell添加清屏快捷键的实现示例
2020/03/23 Python
selenium携带cookies模拟登陆CSDN的实现
2021/01/19 Python
家长给孩子的表扬信
2014/01/17 职场文书
中式餐厅创业计划书范文
2014/01/23 职场文书
5.12护士节演讲稿
2014/04/30 职场文书
四风剖析查摆对照检查材料思想汇报
2014/09/24 职场文书
2014年应急工作总结
2014/12/11 职场文书
法院个人总结
2015/03/03 职场文书
奖学金主要事迹范文
2015/11/04 职场文书
七年级作文之《我和我的祖国》观后感作文
2019/10/18 职场文书
教你怎么用Python selenium操作浏览器对象的基础API
2021/06/23 Python
python 远程执行命令的详细代码
2022/02/15 Python
vue使用echarts实现折线图
2022/03/21 Vue.js