屏幕适配

来源:互联网 发布:网络成瘾的心理成因 编辑:程序博客网 时间:2024/06/05 01:15

概念


  • pixel:像素点,一个发光点,代码中概念
  • pt: point 点 1/72inch px = pt*(ppi/72),屏幕显示的概念
  • horizontal: 水平
  • vertical: 垂直
  • diagonal: 对角线
  • scale:缩放因子
  • PPI (Pixel Per Inch):每英寸像素点的个数
  • DPI(Dots Per Inch):每英寸像素点的个数
  • inch:英寸,每英寸等于2.54厘米
  • 逻辑像素
    • 在编程的时候用的坐标点
    • 产生于iPhone3GS,把320*480point显示在320*480pixel屏幕上
  • 渲染像素
    • 经过GPU放大处理后的像素
    • 产生于iPhone4,将逻辑像素放大2倍,把320*480point显示在640*960pixel屏幕上
  • 物理像素 (device pixels)
    • 经过一系列处理最终显示在屏幕的像素,实际上,缩放因子为2倍的设备的渲染像素就是物理像素,到了Plus系列上才出现了物理像素与渲染像素之分
    • 产生于iPhone6P/6sP/7P,从逻辑像素放大3倍,把414*736point转换为1242*2208piexl,再从渲染像素缩小1.15倍,23个像素点放在20个像素点上显示,物理比例是渲染比例的86%,显示在1080*1920分辨率
  • 三基色
    • 合成其他光最基本的颜色
    • 红绿蓝
    • 本身发光
  • 三原色
    • 不发光物体色彩中不能再分解的基本颜色,见英国化学家富博斯特
    • 红黄青,教科书上说是红绿蓝,实际上市红黄青
    • 本身不发光
    • 灰色能够被红黄青合成,但是无论如何黑色不能被合成
  • 屏幕分辨率
    • DV:480×720
    • 视网膜/高清/HD: 720×1280
    • 全高清/QHD: 1080×1920
    • 2K:1152×2048 (iPhone的Plus系列实际上是达到2K级别了,但是经过1.15倍的缩放之后只有全高清的效果)
    • 4K:2160×4096(目前只有索尼Z5P 2015年10月 2560*3860 806ppi 5.2inch)
  • 显示技术
    • 苹果Retina,即俗称的视网膜显示技术,将更多像素点压缩到屏幕,肉眼无法分辨其单独像素,iPhone/iTouch压缩像素密度达到或高于300ppi不再出现颗粒感;iPad:260ppi,Mac:200ppi
    • 苹果双域像素,产生于iPhone6,子像素倾斜排列,产生侧视屏幕得到更广的可视角度
    • 三星Pentile,子像素只有红绿排列或者蓝绿排列,临接像素共享另外一个子像素,使得子像素数量缩减1/3,色彩显示效果不减,像素密度得到提高

坐标空间


  • 二维空间坐标系
    • X轴平行于屏幕,正方向向右
    • Y轴平行于屏幕,正方向向下
  • 三维空间坐标系
    • X轴平行于屏幕,正方向向右
    • Y轴平行于屏幕,正方向向下
    • Z轴垂直于屏幕,正方向向外,即更靠近用户的视线

适配技术


  • iOS 4 –––– Autoresizing
    • Autoresizing 的核心思想就是:参照父容器来设置子控件的 frame,不再写死 frame
    • 缺陷:Autoresizing 只能控制父子控件之间的位置关系,对于兄弟关系,束手无策
  • iOS 6 —— Auto Layout(自动布局)
    • 随着 iPhone5 \ iPhone5s 的发布,苹果设备的屏幕尺寸变化越来越多, 不仅要求能控制父子控件的位置关系,也要求能控制任意控件之间的位置关系,Auto Layout产生了
    • Auto Layout 主要解决的问题:控件位置的参照关系不再局限于父控件
  • iOS 8 —— Size Classes + Auto Layout
    • iPhone6 发布以后,为了能更容易的适配不同的屏幕,苹果推出了 Size Classes 技术
    • 通过 Auto Layout 设置的约束,各种不同的屏幕都会使用相同的约束
    • 通过 Size Classes + Auto Layout, 可以为不同尺寸的屏幕设置不同的约束
      例如: 计算器,在iPhone的横屏、竖屏下的不同表现,和在iPhone和iPad下不同的表现
    • Size Classes 主要解决的问题: iPhone横竖屏适配及iPhone和iPad开发时共用一个SB的问题
  • iOS 9 —— Size Classes + Auto Layout + StackView
    • StackView 的核心便是方便垂直或水平排布多个 subview,类似于 android 的 LinearLayout
    • StackView 最有用之处是它会自动为每个 subview 创建和添加 Auto Layout 约束,程序员可以
      通过选项配置subview的大小、排布以及彼此间的间距
    • stackview 主要解决的问题: 简化在线性方向上,重复设置控件布局约束的问题
0 0
原创粉丝点击