標注
推薦Sketch 插件,Sketch Measure。 在第一次標注時,會讓選擇設(shè)計尺寸的界面分辨率,750x1334px 是Retina @2x 的尺寸,所以我們選擇此項,標注的尺寸得到的實際上是pt(point),也就是縮小2倍的尺寸。(圖中正方形尺寸是200x200px,選擇Retina @2x (pt) 選項后標注的尺寸是100x100pt)
早期的iPhone3GS的屏幕分辨率是320*480(PPI=163),iOS繪制圖形(CGPoint/CGSize/CGRect)均以point為單位(measured in points):
1 point = 1 pixel(Point Per Inch=Pixel Per Inch=PPI)
后來在iPhone4中,同樣大?。?.5 inch)的屏幕采用了Retina顯示技術(shù),橫、縱向方向像素密度都被放大到2倍,像素分辨率提高到(320x2)x(480x2)= 960x640(PPI=326), 顯像分辨率提升至iPhone3GS的4倍(1個Point被渲染成1個2x2的像素矩陣)。
但是對于開發(fā)者來說,iOS繪制圖形的API依然沿襲point(pt,注意區(qū)分印刷行業(yè)的“磅”)為單位。在同樣的邏輯坐標系下(320x480):
1 point = scale*pixel(在iPhone4~6中,縮放因子scale=2;在iPhone6+中,縮放因子scale=3)。
05.29 更新
第二種做法是以開發(fā)者在開發(fā)App時的尺寸為基準,也就是1x 大小的尺寸設(shè)計。
iOS iPhone 6 1x 尺寸是375x667pt。這個尺寸的單位是pt(點),也就是開發(fā)者在開發(fā)時的尺寸。適配安卓時,選擇 xhdpi 360x640dp,(第二種做法是以開發(fā)者繪制圖形的單位為基準,所以這里用了dp,但由于是以1x 的標準做,所以可以把px 看作是dp)
標注
iOS:以這個尺寸完成 UI 設(shè)計之后,同樣使用Sketch Measure標注。在第一次標注時,選擇Points @1x(pt) 選項,標注出來的pt=px。
Android:適配 Android 360x640dp 的尺寸,橫向調(diào)整相應(yīng)的元素,標注時同樣會提示選擇設(shè)計時的界面分辨率,LDPI、MDPI、XHDPI、XHDPI、XXHDPI、XXXHDPI 是供 Android 設(shè)計選擇的,我們選擇 XHDPI,生成的標注單位都是pt(尺寸) 和 sp(文字)。
切圖
iOS:可以直接輸出@2x 資源用在iPhone 4-6,@3x 資源用在iPhone 6plus 上。
Android:Android 的分辨率很多,但通過【友盟+】全域指數(shù) 最新的 Android 設(shè)備分辨率排名可以看出主要的分辨率集中在 HDPI、XHDPI 和 XXHDPI,并且向大屏發(fā)展,所以我們在輸出切圖的時候,可以輸出這幾個 DPI 的資源即可,或者根據(jù)不項目具體要求。
Android 360x640dp 設(shè)計,輸出@1.5倍作為 HDPI 資源,輸出@2x作為 XHDPI 資源,輸出@3倍大小作為 XXHDPI 資源。有沒有感覺特別暈?如果可以理解最好,理解不了,推薦一個 Sketch 插件,sketch-android-assets 可以自動導(dǎo)出標準的 Android 切圖資源,iOS 的資源是全部放在一起,以后綴@2x、@3x(1x 資源當然就沒有后綴) 的形式輸出,而 Android 是把不同 DPI 下的資源放在相應(yīng)的文件夾下,文件名是相同的。
這里再來解釋一下 iOS 和 Android 在開發(fā) App 時的單位問題,以及適配 Android 所選的分辨率。上面的引文里介紹了在 iOS 中,繪制圖形是以 point 為單位,而在 Android 中,是以 dp 為單位。關(guān)于 iOS 和 Android 上的單位問題可以查看這篇文章。建議大家多讀幾遍。
從下面的表格中Most popular screen sizes/resolutions on Android phones可以看出,Android 基礎(chǔ)單位 dp,1x 的屏幕密度,Android 160dpi = iOS 160ppi,1x基礎(chǔ)單位pt。
2x 大小360x640dp,也是對應(yīng)第一種做法里的屏幕渲染像素尺寸720x1280px。360x640dp 與 375x667pt 尺寸很接近,適配起來很方便。