详解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 splice()方法详解
Sep 22 Javascript
基于jQuery实现表格的排序
Dec 02 Javascript
bootstarp modal框居中显示的实现代码
Feb 18 Javascript
微信小程序 图片宽度自适应的实现
Apr 06 Javascript
Easyui和zTree两种方式分别实现树形下拉框
Aug 04 Javascript
Bootstrap一款超好用的前端框架
Sep 25 Javascript
纯html+css+javascript实现楼层跳跃式的页面布局(实例代码)
Oct 25 Javascript
JavaScript事件对象event用法分析
Jul 27 Javascript
微信小程序tabbar底部导航
Nov 05 Javascript
微信jssdk逻辑在vue中的运用详解
Nov 14 Javascript
小程序实现抽奖动画
Apr 16 Javascript
vue限制输入框只能输入8位整数和2位小数的代码
Nov 06 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
php 变量未定义等错误的解决方法
2011/01/12 PHP
基于php的微信公众平台开发入门实例
2015/04/15 PHP
JavaScript与HTML结合的基本使用方法整理
2015/10/12 PHP
PHP使用Pear发送邮件(Windows环境)
2016/01/05 PHP
PHP sdk文档处理常用代码示例解析
2020/12/09 PHP
window.onresize 多次触发的解决方法
2013/11/08 Javascript
Jquery的Tabs内容轮换效果实现代码,几行搞定
2014/02/12 Javascript
JavaScript闭包函数访问外部变量的方法
2014/08/27 Javascript
前端轻量级MVC框架CanJS详解
2014/09/26 Javascript
jQuery实现产品对比功能附源码下载
2016/08/09 Javascript
深入理解选择框脚本[推荐]
2016/12/13 Javascript
详解Angularjs 自定义指令中的数据绑定
2018/07/19 Javascript
微信小程序事件流原理解析
2019/11/27 Javascript
解决vue elementUI中table里数字、字母、中文混合排序问题
2020/01/07 Javascript
[01:18:45]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第三场2月1日
2021/03/11 DOTA
Python实现建立SSH连接的方法
2015/06/03 Python
Python判断值是否在list或set中的性能对比分析
2016/04/16 Python
python timestamp和datetime之间转换详解
2017/12/11 Python
python正则表达式面试题解答
2020/04/28 Python
python实现csv格式文件转为asc格式文件的方法
2018/03/23 Python
python print 按逗号或空格分隔的方法
2018/05/02 Python
python爬虫获取小区经纬度以及结构化地址
2018/12/30 Python
在python里从协程返回一个值的示例
2019/02/19 Python
详解python函数的闭包问题(内部函数与外部函数详述)
2019/05/17 Python
python 模拟银行转账功能过程详解
2019/08/06 Python
Python通过正则库爬取淘宝商品信息代码实例
2020/03/02 Python
python中有帮助函数吗
2020/06/19 Python
详解Selenium 元素定位和WebDriver常用方法
2020/12/04 Python
移动端解决悬浮层(悬浮header、footer)会遮挡住内容的3种方法
2015/03/27 HTML / CSS
英国百安居装饰建材网上超市:B&Q
2016/09/13 全球购物
维多利亚的秘密阿联酋官网:Victoria’s Secret阿联酋
2019/12/07 全球购物
英语分层教学实施方案
2014/06/15 职场文书
2014年后勤工作总结范文
2014/12/16 职场文书
小学一年级班主任工作经验交流材料
2015/11/02 职场文书
python实战之一步一步教你绘制小猪佩奇
2021/04/22 Python
Win10加载疑难解答时出错发生意外错误的解决方法
2022/07/07 数码科技