从一张设计图的实现说起,为什么模拟器下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. DB2 索引(2)

    最近研究了一点DB2索引相关的东西,做一个总结: (1)在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构: (2)在经常用连接的列(join)上建索引,这些列主要是一些外键,可以加快连接的速 ...

  2. 【GStreamer开发】GStreamer播放教程04——既看式流

    目的 在<GStreamer基础教程--流>里面我们展示了如何在较差的网络条件下使用缓冲这个机制来提升用户体验.本教程在<GStreamer基础教程--流>的基础上在扩展了一下 ...

  3. android基础---->传感器的使用

    现在每部Android 手机里面都会内置有许多的传感器,它们能够监测到各种发生在手机上的物理事件,而我们只要灵活运用这些事件就可以编写出很多好玩的应用程序.今天我们开始简单的传感器使用的学习. 目录导 ...

  4. DeviceEventEmitter React-Native 发送和接受消息(事件监听器)

    A页面注册通知: import {DeviceEventEmitter} from 'react-native'; //… //调用事件通知 DeviceEventEmitter.emit('xxxN ...

  5. [VS] - EntityFrameworkCore 2.0 安装失败 之解决

    背景 在 Visual Studio 2017 中,使用 Nuget 包管理器安装 EntityFrameworkCore 2.0 失败.切换至程序包控制器管理台,查看 Error Message: ...

  6. C++ 生成 voronoi 图 & C++生成泰森多边形图形

    1. 功能 生成voronoi图的一个类 2. 代码 VoronoiDiagramGenerator.h #pragma once //Microsoft Visual Studio 2015 Ent ...

  7. Django框架1——视图和URL配置

    三个命令 1.创建一个django项目 在cmd中:django-admin.py startproject project_name D:\python\django_site>django- ...

  8. 03 python 对象笔记

    类的命名方法 1.使用大驼峰命名法:每一个单词的首字母大写(第一个的也要)2.单词之间不需要下划线 对象的内置函数和属性 1.使用dir()函数来获取对象的内置方法和属性.返回值是一个列表.2.返回中 ...

  9. MyBatis Generator 自动生成的POJO对象的使用(二)

    四.Example Class使用说明 示例类指定如何构建动态where子句. 表中的每个非BLOB列都可以选择包含在where子句中. 示例是演示此类用法的最佳方法. 示例类可用于生成几乎无限制的w ...

  10. 跟我一起学docker

    一.认识 1.什么是docker Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目.它基于 Google 公司推出的 Go 语言实现. 项目后来加 ...