详解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 相关文章推荐
Prototype Number对象 学习
Jul 19 Javascript
实用的JS正则表达式(手机号码/IP正则/邮编正则/电话等)
Jan 11 Javascript
基于JQuery 滑动与动画的说明介绍
Apr 18 Javascript
ExtJS4利根据登录后不同的角色分配不同的树形菜单
May 02 Javascript
基于jQuery实现的向下滑动二级菜单效果代码
Aug 31 Javascript
js实现select二级联动下拉菜单
Apr 17 Javascript
Bootstrap table的使用方法
Nov 02 Javascript
jQuery插件FusionCharts实现的Marimekko图效果示例【附demo源码】
Mar 24 jQuery
JavaScript与Java正则表达式写法的区别介绍
Aug 15 Javascript
JS获取一个表单字段中多条数据并转化为json格式
Oct 17 Javascript
Validform验证时可以为空否则按照指定格式验证
Oct 20 Javascript
jQuery实现高级检索功能
May 28 jQuery
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
php 深入理解strtotime函数的使用详解
2013/05/23 PHP
List Information About the Binary Files Used by an Application
2007/06/11 Javascript
JQuery上传插件Uploadify使用详解及错误处理
2010/04/27 Javascript
javascript获取设置div的高度和宽度兼容任何浏览器
2013/09/22 Javascript
将字符串中由空格隔开的每个单词首字母大写
2014/04/06 Javascript
Javascript保存网页为图片借助于html2canvas库实现
2014/09/05 Javascript
浅谈javascript中call()、apply()、bind()的用法
2015/04/20 Javascript
javascript搜索框效果实现方法
2015/05/14 Javascript
Javascript 是你的高阶函数(高级应用)
2015/06/15 Javascript
jQuery实现查找最近父节点的方法
2016/06/23 Javascript
全面了解JS中的匿名函数
2016/06/29 Javascript
jQuery元素属性操作实例(设置、获取及删除元素属性)
2016/09/08 Javascript
微信小程序实现打卡日历功能
2020/09/21 Javascript
Node.js学习教程之Module模块
2019/09/03 Javascript
Vue执行方法,方法获取data值,设置data值,方法传值操作
2020/08/05 Javascript
[56:18]VGJ.S vs Secret 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python解析xml文件操作实例
2014/10/05 Python
Python使用Srapy框架爬虫模拟登陆并抓取知乎内容
2016/07/02 Python
python脚本实现验证码识别
2018/06/07 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
2019/04/03 Python
Python解析微信dat文件的方法
2020/11/30 Python
shell程序中如何注释
2012/01/28 面试题
成人大专生实习期的自我评价
2013/10/02 职场文书
管理站站长岗位职责
2013/11/27 职场文书
作弊检讨书1000字
2014/02/01 职场文书
12月小学生校园广播稿
2014/02/04 职场文书
信用社主任竞聘演讲稿
2014/05/23 职场文书
2014教师党员自我评议(5篇)
2014/09/20 职场文书
区长工作作风个人整改措施
2014/10/01 职场文书
2015元旦联欢晚会结束语
2014/12/14 职场文书
董事长秘书岗位职责
2015/02/13 职场文书
贫困证明怎么写
2015/06/16 职场文书
宣传稿格式范文
2015/07/23 职场文书
2016七夕情人节寄语
2015/12/04 职场文书
python基础之匿名函数详解
2021/04/21 Python
MySQL安装后默认自带数据库的作用详解
2021/04/27 MySQL