详解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 相关文章推荐
JavaScript函数获取事件源的小例子
May 14 Javascript
JS遍历Json字符串中键值对先转成JSON对象再遍历
Aug 15 Javascript
使用cluster 将自己的Node服务器扩展为多线程服务器
Nov 10 Javascript
JavaScript跨平台的开源框架NativeScript
Mar 24 Javascript
setTimeout内不支持jquery的选择器的解决方案
Apr 28 Javascript
Jquery常用的方法汇总
Sep 01 Javascript
AngularJS 应用身份认证的技巧总结
Nov 07 Javascript
js实现彩色条纹滚动条效果
Mar 15 Javascript
jQuery实现的手风琴侧边菜单效果
Mar 29 jQuery
JS实现移动端判断上拉和下滑功能
Aug 07 Javascript
JQuery发送ajax请求时中文乱码问题解决
Nov 14 jQuery
vue-resource 拦截器interceptors使用详解
Jan 18 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
模板引擎smarty工作原理以及使用示例
2014/05/25 PHP
Laravel框架中Blade模板的用法示例
2017/08/30 PHP
Laravel 5.5官方推荐的Nginx配置学习教程
2017/10/06 PHP
jQuery提交多个表单的小例子
2013/06/30 Javascript
JS简单操作select和dropdownlist实例
2014/11/26 Javascript
JS for循环中i++ 和 ++i的区别介绍
2016/07/20 Javascript
如何解决IONIC页面底部被遮住无法向上滚动问题
2016/09/06 Javascript
理解AngularJs篇:30分钟快速掌握AngularJs
2016/12/23 Javascript
微信JSAPI Ticket接口签名详解
2020/06/28 Javascript
实现两个文本框同时输入的实例
2017/09/25 Javascript
基于JavaScript实现幸运抽奖页面
2020/07/05 Javascript
vue指令只能输入正数并且只能输入一个小数点的方法
2018/06/08 Javascript
Vue下路由History模式打包后页面空白的解决方法
2018/06/29 Javascript
vue发送ajax请求详解
2018/10/09 Javascript
基于layui的table插件进行复选框联动功能的实现方法
2019/09/19 Javascript
《javascript设计模式》学习笔记一:Javascript面向对象程序设计对象成员的定义分析
2020/04/07 Javascript
解决Echarts2竖直datazoom滑动后显示数据不全的问题
2020/07/20 Javascript
Node.js中的异步生成器与异步迭代详解
2021/01/31 Javascript
[01:13]2014DOTA2西雅图邀请赛 舌尖上的TI4
2014/07/08 DOTA
python计算最大优先级队列实例
2013/12/18 Python
python实现网页链接提取的方法分享
2014/02/25 Python
在Heroku云平台上部署Python的Django框架的教程
2015/04/20 Python
使用python中的in ,not in来检查元素是不是在列表中的方法
2018/07/06 Python
运用Python的webbrowser实现定时打开特定网页
2019/02/21 Python
python实现复制大量文件功能
2019/08/31 Python
Python使用循环神经网络解决文本分类问题的方法详解
2020/01/16 Python
详解CSS3中常用的样式【基本文本和字体样式】
2020/10/20 HTML / CSS
奥地利时尚、美容、玩具和家居之家:Kastner & Öhler
2020/04/26 全球购物
最美乡村医生事迹材料
2014/06/02 职场文书
学校党的群众路线教育实践活动总结材料
2014/10/30 职场文书
群众路线自查报告及整改措施
2014/11/04 职场文书
2014年双拥工作总结
2014/11/21 职场文书
2014年乡镇安全生产工作总结
2014/12/02 职场文书
2014年学生管理工作总结
2014/12/20 职场文书
小学生一年级(书信作文)
2019/08/13 职场文书
配置Kubernetes外网访问集群
2022/03/31 Servers