Android適配的那些P事

2 評論 15380 瀏覽 275 收藏 8 分鐘

聲明:本文從設計角度說明設計稿及倍圖適配問題,不含前端技術,碼農慎入

首先我們看看百度搜索引擎上常見的認識入手:

1

圖1:屏幕分辨率和常見屏幕密度關系

我們知道屏幕密度直接關系到我們所謂的1X ?1.5X ?2X ?3X ?4X圖的對應適配關系,結合圖1可知:

  1. 屏幕密度跟屏幕分辨率可能有關系;
  2. 實操過安卓適配的同學應該了解,并不是所有的生廠商都會做規規矩矩的屏幕分辨率;

單位解釋篇

想要通透得了解關于安卓各機型的適配關系還得從常見的單位入手,dp/px/sp/PPI/DPI

dp=dip=density-independence pixel=獨立設備像素:可以理解為類似現實中厘米的功能,當成是一個物理單位,1dp=1in/160ppi=2.54cm/160ppi≈0.016cm,使文字和圖片在不同屏幕手機中看上去差不多大;

px=pixel=像素:這是我們用Ps、AI出設計稿時的常用單位,在啟動Ps的第一時間我們應該都會將首選項中的單位設置為px 不多做介紹;

sp=Scale-independent pixels=尺度獨立像素(翻譯待考證):是安卓的字體單位,在安卓系統設置中我們可以定義字體大小,以MIUI為例

2

圖2:MIUI7.1字體大小設置界面

在標準模式下(字體是100%)時,1sp=1dp,我們知道iOS HIG里面說過內容樣式大尺寸為17pt(iOS中的默認size),以此為參考,安卓中常用的字號為16±dp(安卓可能出現1.5X圖 所以取偶數)

PPI=Pixel Per Inch=像素密度;? DPI=Dots Per Inch=點密度;

點原來是印刷上的計量單位;像素是電腦顯示器的計量單位;印刷行業規 1點=0.35mm=1/72英寸;針對顯示器設計的分辨率為 72像素/英寸;在針對顯示器的設計中我們可以認為DPI=PPI

PPI計算篇(前方高能)

新手機發布必備的參數一定會有屏幕分辨率(1920*1080),屏幕尺寸(5.0英寸),有心的同學會去官網查詢一下具體的PPI值,這里跟大家解釋一下這三者的轉換關系,以便大家更好地理解安卓適配:

假設屏幕分辨率為W*H(px),物理尺寸為a*b(inch),

則我們常說的屏幕尺寸c(如5.0英寸)其實是對角線的長度,因此:

3

公式1:勾股定理

而PPI是像素密度,指的是屏幕單位寬的像素數:

4

公式2:屏幕密度定義

由此我們推理出:

5

公式3:由公式2推理

因此我們可以得出一個大百度爛大街的PPI DPI計算公式:

6

公式4:PPI計算公式

以上一大串的公式其實想說明的是:

  1. 公式4表面意義似乎是-PPI是屏幕分辨率用勾股計算出的對角線像素數/屏幕尺寸;
  2. 事實上,我們知道一個2*2px的屏幕,對角線像素數也是2px,并不符合勾股定律的計算公式;
  3. 正確理解公式的推理過程,才能正確理解屏幕適配原理;

dp與px換算篇

首先引入dp和px的轉換公式

px=dp*(ppi/160)

簡單陳述一下公式的實際計算方法:

任何一款機型,我們計算或從官方參數得到PPI值后,將PPI/160,得到任何含小數點的值后,舍掉小數,整數進一位就是我們的dp px的轉換關系,即1.5X ?2X ?3X ?4X圖的適用關系,用函數表達即 ?ceil(PPI/160);相除得整數則直接可用:

267ppi機型,ceil(1.67)=2 ?該機型用2X設計稿

423ppi機型,ceil(2.64)=3 ?該機型用3X設計稿

至此我們知道圖1的關系其實還是too young too naive,附上一個較為成熟的關系圖:

7

圖3:屏幕密度范圍與倍圖對應關系

主流手機屏幕尺寸及分辨率

整理了一些主流機型的參數屏幕并附上:置灰文字說明:未查詢到官方數據,為個人計算結果

數據統計包括魅族/小米/華為/三星/HTC/MOTO/VIVO/SONY截止到2016.2的主流機型

8

圖4:主流機型參數及倍圖關系整理

由圖4可見,在大屏手機時代,3X機型成為了主流機型(暫時忽略機型市場占有率);1X機型基本絕跡;4K手機屏也在悄悄進入市場;

一稿適配篇

有限的時候我們如何出多張不同分辨率的效果圖

首先建議以2X圖尺寸(1280*720)為設計原稿進行設計(由圖4可見,1X適配機型基本已經絕種),然2X只需要設計時注意偶數原則即可方便進行適配;另外設計稿也有可能會被要求直接用于iOS,或iOS設計稿直接改改成了安卓的設計稿(iOS主流還是@2X);假設我們手里有一份1136*640(iPhone5/5s) 原稿高保真設計稿,要去適配iOS其它機型及安卓機型:

因為iOS的尺寸比較有代表性,能說明問題,方法在安卓各機型適配過程中通用:

9

圖5:一稿適配方法

需要注意的是,圖標在放大過程中可能會出現鋸齒(所謂虛邊),防鋸齒需要注意的點有很多,其中最主要的一條是 盡量保持圖標文件的形狀屬性(切忌使用位圖素材、柵格化圖層、轉為智能對象)

一點小技巧,在2X→3X過程中,我們可以全選圖層,Cmd+T后 講變形中心移動到畫板左上角的位置,再進行150%變形,會便捷很多;

這次的內容就寫到這里,請大神隨便拍;

 

作者@風口上的豬毛

來源@簡書

本文由 @風口上的豬毛 授權發布于人人都是產品經理?,未經許可,禁止轉載。

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 感謝分享??!

    來自北京 回復
    1. ?? ?? 以后支持~~

      來自北京 回復