1. 程式人生 > >設計師給了px單位的標註,Android開發到底要設定多少dip、dp、sp?

設計師給了px單位的標註,Android開發到底要設定多少dip、dp、sp?

1. 要開發一款Android APP,設計師和開發要約定哪些事情?

    首先,選擇一款主流機型。
    然後,設計師根據該機型的螢幕尺寸設計效果圖,給出px單位的標註。
    最後,開發根據該機型,可以算出px與dp的換算方法,根據px單位的標註,設定為dp為單位的標註。
    備註:1dp=1dip=1sp,對於一般長寬dp或者dip都可以,sp是字型專用單位,在作業系統中設定大中小號字型後,可以改變sp的顯示大小。

    這樣做可以保證在這款機型上,設計師的設計完全表現。對於其他機型,只要尺寸相差不是很大,顯示效果相差不會太大。如果是在手機上設計,在pad上顯示,相差就會比較大了。

2. 舉例說明

    假設選擇GalaxyNexus作為開發的目標機型。
    該機型的螢幕尺寸是720x1280。設計師在720x1280的畫布上進行設計。
    根據計算公式,得知Galaxy Nexus上面,1dip=1dp=1sp=2px。所以對於40px的標註,開發需要給出20dip設定即可。

public static int dip2px(Context context, float dipValue){
    final float scale = context.getResources().getDisplayMetrics().density;
    return (int)(dipValue * scale + 0.5f);
}
public static int px2dip(Context context, float pxValue){
    final float scale = context.getResources().getDisplayMetrics().density;
    return (int)(pxValue / scale + 0.5f);
}
3. 沒辦法保證不同裝置之間的完全適配

    http://su1216.iteye.com/blog/1569029,這篇講的不錯,只有當手機A的螢幕密度/手機B的螢幕密度=手機A的螢幕寬度/手機B的螢幕寬度的時候,A手機上設定的dip,sp,dp單位到了B手機上,才能實現等比縮放。這個條件太苛刻了,所以不可能有完全的適配。

4. 不能做到完全適配,還能做些什麼

    既然絕對長度在不同手機之間不能完全適配,那麼就減少使用絕對長度的機會。

    比如:一行只有一個很長的按鈕,就不要用設定按鈕的長度,因為不同手機上,按鈕長度顯示出不一樣,有的手機上顯示正常,在其他手機上可能就會顯得距離螢幕兩邊很近,甚至超出螢幕。最好是設定按鈕為match_parent,設定左右邊距。這樣不同手機上,邊距都是一樣的。

5. UI適配其他方面的事情

本文主要是說一下標註轉化的實際中怎麼用的問題,UI適配還有很多地方要注意。比如:元件背景中常用9-patch,線性佈局與相對佈局,多種密度圖片drawable-hdpi、drawable-ldpi和drawable-mdpi等。

    9-patch圖片就是注意左邊和下邊的黑線控制縮放區域,右邊和上邊的黑線控制內容區域,很多人容易忽視內容區域。相對佈局的用法還是比較多的,這裡不展開了。多種解析度圖片,一般沒條件切那麼多圖的話,給drawable-hdpi也就夠了,多準備幾款測試手機,看看效果比較重要。