详解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 相关文章推荐
JS获取URL中的参数数据
Dec 05 Javascript
引用其它js时如何同时处理多个window.onload事件
Sep 02 Javascript
点击A元素触发B元素的事件在IE8下会识别成A元素
Sep 04 Javascript
jQuery的Read()方法代替原生JS详解
Nov 08 Javascript
JS 中document.write()的用法和清空的原因浅析
Dec 04 Javascript
JS实现点击拉拽轮播图pc端移动端适配
Sep 05 Javascript
JS实现滚动条触底加载更多
Sep 19 Javascript
解决layui中onchange失效以及form动态渲染失效的问题
Sep 27 Javascript
JS前端广告拦截实现原理解析
Feb 17 Javascript
JavaScript HTML DOM 元素 (节点)新增,编辑,删除操作实例分析
Mar 02 Javascript
vue+element-ui JYAdmin后台管理系统模板解析
Jul 28 Javascript
vue项目proxyTable配置和部署服务器
Apr 14 Vue.js
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
用javascript动态调整iframe高度的方法
2007/03/06 Javascript
js实现仿QQ秀换装效果的方法
2015/03/04 Javascript
详解JavaScript中getFullYear()方法的使用
2015/06/10 Javascript
JS转换HTML转义符的方法
2016/08/24 Javascript
React教程之封装一个Portal可复用组件的方法
2018/01/02 Javascript
JavaScript基础心法 数据类型
2018/03/05 Javascript
详解VUE自定义组件中用.sync修饰符与v-model的区别
2018/06/26 Javascript
vue-resource请求实现http登录拦截或者路由拦截的方法
2018/07/11 Javascript
基于Vue-Cli 打包自动生成/抽离相关配置文件的实现方法
2018/12/09 Javascript
vue 组件基础知识总结
2021/01/26 Vue.js
[06:36]吞吞映像top1
2014/06/20 DOTA
[02:36]DOTA2亚洲邀请赛小组赛精彩集锦:奇迹哥卡尔秀翻全场
2017/03/28 DOTA
[37:45]完美世界DOTA2联赛PWL S3 LBZS vs Phoenix 第二场 12.09
2020/12/11 DOTA
Python入门篇之编程习惯与特点
2014/10/17 Python
python中使用序列的方法
2015/08/03 Python
Python中列表、字典、元组数据结构的简单学习笔记
2016/03/20 Python
Python的网络编程库Gevent的安装及使用技巧
2016/06/24 Python
pandas将numpy数组写入到csv的实例
2018/07/04 Python
Python面向对象程序设计之类的定义与继承简单示例
2019/03/18 Python
Python3 文章标题关键字提取的例子
2019/08/26 Python
Tensorflow 多线程设置方式
2020/02/06 Python
Python实现对adb命令封装
2020/03/06 Python
Python如何获取文件路径/目录
2020/09/22 Python
详解numpy.ndarray.reshape()函数的参数问题
2020/10/13 Python
利用Python函数实现一个万历表完整示例
2021/01/23 Python
HTML5梦幻之旅——炫丽的流星雨效果实现过程
2013/08/06 HTML / CSS
中专生自我鉴定书范文
2013/12/28 职场文书
后备干部考察材料
2014/02/12 职场文书
2014植树节活动总结
2014/03/11 职场文书
如何写好建议书
2014/03/13 职场文书
培训研修方案
2014/06/06 职场文书
物业品质提升方案
2014/06/08 职场文书
捐款活动总结
2014/08/27 职场文书
学校青年志愿者活动总结
2015/05/06 职场文书
2015年安全生产管理工作总结
2015/05/25 职场文书
关于CSS自定义属性与前端页面的主题切换问题
2022/03/21 HTML / CSS