详解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 相关文章推荐
Jquery Uploadify多文件上传带进度条且传递自己的参数
Aug 28 Javascript
jQuery实现手机号码输入提示功能实例
Apr 30 Javascript
JS禁用页面上所有控件的实现方法(附demo源码下载)
Dec 17 Javascript
简述jQuery Easyui一些用法
Aug 01 jQuery
ComboBox(下拉列表框)通过url加载调用远程数据的方法
Aug 06 Javascript
详解用函数式编程对JavaScript进行断舍离
Sep 18 Javascript
使用JavaScript实现一个小程序之99乘法表
Sep 21 Javascript
原生JS实现的雪花飘落动画效果
May 03 Javascript
Vue render渲染时间戳转时间,时间转时间戳及渲染进度条效果
Jul 27 Javascript
vue input实现点击按钮文字增删功能示例
Jan 29 Javascript
实用Javascript调试技巧分享(小结)
Jun 18 Javascript
webpack 处理CSS资源的实现
Sep 27 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
在Linux系统下一键重新安装WordPress的脚本示例
2015/06/30 PHP
TP5(thinkPHP5)框架使用ajax实现与后台数据交互的方法小结
2020/02/10 PHP
WordPress伪静态规则设置代码实例
2020/12/10 PHP
JavaScript中访问节点对象的方法有哪些如何使用
2013/09/24 Javascript
JS与C#编码解码
2013/12/03 Javascript
21个JavaScript事件(Events)属性汇总
2014/12/02 Javascript
nodejs实现遍历文件夹并统计文件大小
2015/05/28 NodeJs
基于jQuery通过jQuery.form.js插件使用ajax提交form表单
2015/08/17 Javascript
javascript省市级联功能实现方法实例详解
2015/10/20 Javascript
AngularJS中处理多个promise的方式
2016/02/02 Javascript
全面解析Bootstrap布局组件应用
2016/02/22 Javascript
基于RequireJS和JQuery的模块化编程——常见问题全面解析
2016/04/14 Javascript
JS作为值的函数用法示例
2016/06/20 Javascript
JavaScript之json_动力节点Java学院整理
2017/06/29 Javascript
vue.js数据绑定的方法(单向、双向和一次性绑定)
2017/07/13 Javascript
Vue列表页渲染优化详解
2017/07/24 Javascript
Angular.js通过自定义指令directive实现滑块滑动效果
2017/10/13 Javascript
Vue 2.0学习笔记之使用$refs访问Vue中的DOM
2017/12/19 Javascript
JS实现的获取银行卡号归属地及银行卡类型操作示例
2019/01/08 Javascript
jQuery+vue.js实现的多选下拉列表功能示例
2019/01/15 jQuery
es6 filter() 数组过滤方法总结
2019/04/03 Javascript
Python Web框架Flask信号机制(signals)介绍
2015/01/01 Python
Python中函数的多种格式和使用实例及小技巧
2015/04/13 Python
python正则表达式之作业计算器
2016/03/18 Python
python3实现基于用户的协同过滤
2018/05/31 Python
Python paramiko模块使用解析(实现ssh)
2019/08/30 Python
PyTorch加载自己的数据集实例详解
2020/03/18 Python
Python定时任务APScheduler原理及实例解析
2020/05/30 Python
python搜索算法原理及实例讲解
2020/11/18 Python
python里glob模块知识点总结
2021/01/05 Python
Python实现疫情地图可视化
2021/02/05 Python
环境科学专业个人求职信
2013/12/15 职场文书
冰淇淋店创业计划书范文
2013/12/27 职场文书
化学专业大学生职业生涯规划范文
2014/09/13 职场文书
在JavaScript中如何使用宏详解
2021/05/06 Javascript
关于nginx 实现jira反向代理的问题
2021/09/25 Servers