详解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 相关文章推荐
IE6、IE7中setAttribute不支持class/for/rowspan/colspan等属性
Aug 28 Javascript
jquery 实现checkbox全选,反选,全不选等功能代码(奇数)
Oct 24 Javascript
jQuery实现简单网页遮罩层/弹出层效果兼容IE6、IE7
Jun 16 Javascript
浅谈JS之tagNaem和nodeName
Sep 13 Javascript
AngularJS出现$http异步后台无法获取请求参数问题的解决方法
Nov 03 Javascript
jQuery操作json常用方法示例
Jan 04 Javascript
jQuery实现的弹幕效果完整实例
Sep 06 jQuery
bootstrap实现点击删除按钮弹出确认框的实例代码
Aug 16 Javascript
用VueJS写一个Chrome浏览器插件的实现方法
Feb 27 Javascript
微信小程序城市选择及搜索功能的方法
Mar 22 Javascript
解决$store.getters调用不执行的问题
Nov 08 Javascript
js实现动态时钟
Mar 12 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
笑谈配置,使用Smarty技术
2007/01/04 PHP
简单的php中文转拼音的实现代码
2014/02/11 PHP
php实现的简单数据库操作Model类
2016/11/16 PHP
php7基于递归实现删除空文件夹的方法示例
2017/06/15 PHP
php实现快速对二维数组某一列进行组装的方法小结
2019/12/04 PHP
大家未必知道的Js技巧收藏
2008/04/07 Javascript
扩展js对象数组的OrderByAsc和OrderByDesc方法实现思路
2013/05/17 Javascript
采用自执行的匿名函数解决for循环使用闭包的问题
2014/09/11 Javascript
jQuery往textarea中光标所在位置插入文本的方法
2015/06/26 Javascript
asp知识整理笔记3(问答模式)
2015/09/27 Javascript
JavaScript精炼之构造函数 Constructor及Constructor属性详解
2015/11/05 Javascript
JS实现部分HTML固定页面顶部随屏滚动效果
2015/12/24 Javascript
浅谈JQ中mouseover和mouseenter的区别
2016/09/13 Javascript
bootstrap PrintThis打印插件使用详解
2017/02/20 Javascript
jQuery实现简单漂亮的Nav导航菜单效果
2017/03/29 jQuery
详解Vue.js基于$.ajax获取数据并与组件的data绑定
2017/05/26 Javascript
通过fastclick源码分析彻底解决tap“点透”
2017/12/24 Javascript
使用typescript开发angular模块并发布npm包
2018/04/19 Javascript
浅谈小程序 setData学问多
2019/02/20 Javascript
仿iPhone通讯录制作小程序自定义选择组件的实现
2019/05/23 Javascript
js实现贪吃蛇小游戏
2019/10/29 Javascript
python计算圆周长、面积、球体体积并画出圆
2014/04/08 Python
横向对比分析Python解析XML的四种方式
2016/03/30 Python
Python简单实现阿拉伯数字和罗马数字的互相转换功能示例
2018/04/17 Python
Python实现按照指定要求逆序输出一个数字的方法
2018/04/19 Python
Python利用递归实现文件的复制方法
2018/10/27 Python
Python如何处理大数据?3个技巧效率提升攻略(推荐)
2019/04/15 Python
Python读写锁实现实现代码解析
2020/11/28 Python
html5小技巧之通过document.head获取head元素
2014/06/04 HTML / CSS
教育技术职业规划范文
2014/03/04 职场文书
人力资源管理专业应届生求职信
2014/04/24 职场文书
乡党政领导班子群众路线教育实践活动个人对照检查材料
2014/09/20 职场文书
2014年保险公司工作总结
2014/11/22 职场文书
在职证明格式样本
2015/06/15 职场文书
学校趣味运动会开幕词
2016/03/04 职场文书
vue实现input输入模糊查询的三种方式
2022/08/14 Vue.js