从一张设计图的实现说起,为什么模拟器下ip6的分辨率是375而设计图一般给750?

看上面的这张图,首先屏幕尺寸就是实际的物理尺寸,重点是分辨率pt和分辨率px,要回答这个问题,就要明白pt与px。那么什么是pt呢?pt又叫做逻辑分辨率,简单的理解可以理解为长度单位。他只和屏幕尺寸有关系,3和4都是320pt。为什么5也是320pt呢?是因为高度变了,所以尺寸更大一点。但是他的宽度都是320的逻辑分辨率。所以简单的理解他这个pt跟屏幕的尺寸有关系。他就是一个长度单位。

那么px是什么概念呢?我们叫他叫做物理分辨率。他和屏幕的尺寸没有任何关系,他也不是一个视觉单位。简单一点,可以理解一个像素点。我们看到的图片都是由很多个像素点构成的。为什么他不是一个长度相关的单位呢?我们只能描述有多少个点,不能描述是多大的点。
 
所以这能得到pt与px的一个关系,就是一个pt里面有几个px。或者说一个pt里面能够包含多少个px。那么为什么4比3的屏幕效果更好一些呢?这个就是逻辑分辨率里面包含的物理像素点个数有关系。3和4的逻辑分辨率都是320*480。关键在于它们的物理分辨率不一样。4对应是640*960。3对应的是320*480。同样的长度,3少一半。
所以Reader下面是1倍,2倍的关系。这个表示什么呢?这个表示同一个pt下面包含了多少个px。我们同一个单位下面,物理点越多,图像的显示越细腻,越清晰。6plus是3倍。每单位下面比6多出一个像素点。理论上是更清晰的。但是人眼分辨不出来,2倍已经是人眼能够分辨的极限。
最后是这个ppi。ppi是什么概念,他和Reader的概念是一样的。Reader的意思是每个pt下面包含多少个px。ppi表示每一寸包含多少个物理像素点。所以这个163是怎么得出来的。3.5寸表示的是对角线的距离,那么对角线的距离知道了,那怎么求这个163呢,就是勾股定理,320*480平方开根号再除以3.5寸得到的。
所以设计师是根据物理分辨率给的,不是根据逻辑分辨率给。所以6下面是2倍关系。
总结:
1、pt也称为逻辑分辨率
2、pt的大小和屏幕尺寸有关系,简单可以理解为长度和视觉单位
3、px指物理分辨率,和屏幕尺寸没有关系。因为点没有大小,只有多少个。
a、1个pt可以有1个px构成,也可以有2个,还可以有3个甚至更多构成。
b、ip6下2个px才构成1个pt。
如何适配不同的机型?
所以设计图给的是物理像素750px,但我们做图的时候,width里面的px指的是逻辑分辨率,不是物理分辨,所以设置宽度的时候需要/2,375px。但是我们不会只针对一种机型,要在不同的机型下作图。375是ip6下面的逻辑分辨率,但是到了ip6plus就不好用了,ip6plus是414。换成414后,切成ip5又不行了,只显示一半的图片。这样肯定不行,那怎么办?
需要自动去换算,根据不同的机型,自动去算单位
使用rpx,小程序会自动在不同的分辨率下进行转换,而使用px不会。为什么不会,因为在小程序下面,这个px指的是逻辑分辨率,也就是长度单位。是个视觉单位,所以长度是一定的。
ip6下 1px = 1rpx = 0.5pt
所以设计图是按照ip6下设计的,那么这里的px跟小程序里面的rpx是 1:1 的关系
<image src="/images/timg.jpeg" style="width:750rpx; "></image>
为什么要在ip6的物理分辨率来做设计图?为什么这里的750rpx就能适配所有的机型?
因为在ip6下,很好换算。1比1的关系。那么ip6下750rpx刚刚好称满屏幕。在ip6 plus下,750rpx就不是750px的逻辑分辨率,而是750/0.6=1250的逻辑像素。也是撑满ip6 plus。当时小程序就是依ip6来设计的,然后根据不同的逻辑分辨率换算出不同的rpx。所以按照ip6的物理像素写,就能自动的转换各种屏幕
ip6下 1px = 1rpx
ip6 plus下 1px = 0.6rpx
所以rpx是根据不同的机型做自适应调整的,但是有时候不需要自适应调整,就不能用rpx


移动分辨率和rpx的更多相关文章

  1. 小程序开发--移动端分辨率与rpx

    首先说一个很有意思的问题:一块720p的屏幕和1080p的屏幕那个大? 这个问题很有代表性,如果手机竖着放,720p=720px*1280px,而1080p=1080px*1920px;那么在宽度上, ...

  2. 初尝微信小程序3-移动设备的分辨率与rpx

    屏幕尺寸就是实际的物理尺寸. 分辨率(pt),是逻辑分辨率,pt的大小只和屏幕尺寸有关,简单可以理解为长度和视觉单位. 分辨率(px),是物理分辨率,单位是像素点,和屏幕尺寸没有关系. 微信开发者工具 ...

  3. rpx单位与移动设备分辨率

      移动设备的分辨率与rpx   不是所有的单位都适合用rpx   文章来源:刘俊涛的博客 欢迎关注,有问题一起学习欢迎留言.评论

  4. 小程序学习-理解小程序中响应式单位rpx

    微信小程序的官方文档用rpx来做响应式布局单位!那什么是rpx,应该如何设置呢?今天我们就来好好了解一下. [像素]:它不是自然界的物理长度,指基本原色素及其灰度的基本编码. [物理像素]:它是显示器 ...

  5. 微信小程序学习笔记

    一.文件结构解析 pages文件夹: 书写各个页面代码以及组件.内部js文件书写js ;  wxml文件为HTML ;   wxss文件为css样式 : json文件为配置当前页面的默认项,如titl ...

  6. ubuntu18.04微信小程序学习笔记

    安装微信小程序开发工具 安装 https://github.com/cytle/wechat_web_devtools 创建快捷方式 sudo nautilus //在/usr/share/appli ...

  7. 编写第一个微信小程序界面

    编写第一个微信小程序界面 不忘初心,方得始终:初心易得,始终难守. 传统的 web 结构 小程序文件目录结构 小程序页面层级结构 编写第一个小程序 1. 创建小程序目录结构 2. 编写代码 welco ...

  8. 微信小程序中的rpx与移动设备物理像素

    如下图: pt也称逻辑像素点,px物理像素点,1pt等于2px或者3px或更多; iphone6下面0.5pt=1px=1rpx; 使用rpx,小程序在不同设备分辨率下自行转换: PPI=物理像素开根 ...

  9. css中px,em,rem,rpx的区别

    今天看到一个面试题为 px,em的区别,为了更好地让读者区分css的长度单位,我总结下css中常用的长度单位: px,em,rem,rpx 像素px是我们在定义CSS中经常用到的尺寸大小单位,而em在 ...

随机推荐

  1. CRC校验的问题(c语言实现CRC校验和)

    1. 前面的数 7A 01 00,计算的结果是0X4920 2. 那么把数据CRC加上 3. 测试代码,计算出来的结果对不上,什么情况?可是我把参考模型的全部都选了一遍,也对不上其中一个!!! 4.  ...

  2. windows系统中在jupyter安装虚拟环境内核

    一.在jupyter中安装虚拟环境内核 1.创建Python3虚拟环境 参考本文其他博客 2.进入虚拟环境 3.安装jupyter pip install jupyter 4.添加当前环境到jupyt ...

  3. 【嵌入式硬件Esp32】ESP32 正确下载姿势

    程序的正确下载步骤,以8M flash为例子: 一.硬件连接 ESP32 的运行状态主要由 GPIO0 决定 二.ESP32 Flash 地址配置 ESP32 在编译时,通过 make menucon ...

  4. 由于我最近搞了个wordpress搭建博客,这里我为大家分享一哈,使用wordpress过程中遇到的坑

    Windows server下搭建mysql+php+apache环境参考教程: https://blog.csdn.net/qq_38125058/article/details/81157865 ...

  5. 以Redis为例介绍YCSB的使用

    环境 首先确保安装了jdk和maven,我个人使用的是openjdk11和maven3,由于本人非常建议使用python版本的ycsb,建议安装python.ubuntu 18.04下可以使用apt安 ...

  6. Redis与memached的区别

    Redis与Memcached的区别 传统MySQL+ Memcached架构遇到的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都 ...

  7. Appium移动自动化测试-----(五)python-client安装与测试

    前提条件 当你点击这一章时,说明你是打算使用 Python 语言编写 appium 自动化测试脚本的. 1.安装 Python 语言 , Python的安装相对相简单得多. 2.Python 编辑器很 ...

  8. 通用mybatis单表操作接口

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "- ...

  9. Nginx07---反向代理

    小程序使用nginx反向代理https和wss user www www; worker_processes auto; error_log /www/wwwlogs/nginx_error.log ...

  10. go get 使用proxy来下载

    http_proxy=https://127.0.0.1:1087 go get -v github.com/Shopify/sarama https_proxy=https://127.0.0.1: ...