2012-11-15 113 views
33

我是一名視覺設計師,從事Android設計工作,我試圖爲我們的工程師指定我的PSD文件。我似乎無法找到任何有關在任何Android文檔中將點大小轉換爲SP的文檔。 (只有SP應該用於類型)如何將pt轉換爲sp?

+1

我不知道它的正確與否。在那個公式中對我有用。 SP =(PT/72)* densitydpi。示例(sp =(9/72)* 160).. – arul

+1

請在此處查看我的帖子http://systemdotrun.blogspot.co.uk/2014/09/whats-point-in-font-sizing.html – Dori

回答

1

像素和sp之間沒有直接映射,因爲sps是隨用戶在系統設置中更改設備字體大小而動態設置的。用戶可能想要查看所有應用程序字體更小或更大的尺寸。這是由操作系統提供的輔助功能。

+0

Roger但是,當我在PSD中設計屏幕的理想佈局時...我指定了點的大小,因爲這決定了類型與我設計中所有其他元素的關係......我們沒有測量SP單位Photoshop ...所以如果我爲字體選擇22pts ...我問我如何在SP單位的規格中標記出來。有沒有辦法將該22pt翻譯成sp來實現規範目的? – Megatallica

+0

也......我意識到這個類型會被用戶改變......我主要問的是如何把我的PT尺寸作爲SP進行通信......必須有某種方式來表達這一點,因爲大多數平面設計師工作與排版中的點(而不是像素) – Megatallica

+0

在這種情況下,我認爲1對1映射很適合。 –

1

^弗拉維奧說什麼。但檢查出的Android開發者網站上的顯示指標類概述。你可能會發現你所需要的是什麼... http://developer.android.com/reference/android/util/DisplayMetrics.html#

+0

對不起,我還沒有看到任何特定的點大小 - > SP大小轉換...我正在尋找一個比例等 – Megatallica

+0

也當我從android dev網站打開一個GUI文件(提供的PSD與所有的Android元素)我點擊了一些類型,打開了字體調色板和PT尺寸與GUI文檔中提供的規格是1:1的比例... – Megatallica

40

問題是它取決於密度。真的,他們不是很好的測量來比較。

  • 點數:有12個一異食癖,每英寸6個皮卡,所以72(更精確地72.27)每英寸點。

  • 設備無關的像素(DP):這將是等於像素尺寸爲MDPI顯示器,爲1.5倍HDPI顯示器象素大小,和2X爲XHDPI顯示像素大小。 (例如12dp = 12px MDPI,18px HDPI,24px XHDPI)。

  • 比例像素:這些將等同於DP值,但根據用戶偏好縮小或縮小。

如果你在72 DPI(Photoshop中默認DPI設置),一個8磅字體將相當於8像素,這將在MDPI被加上了8px,12px的在華電國際和16px的設計在XHDPI,或者更簡單8dp適用於所有密度。我不知道有多少縮放適用於不同的SP設置,所以你不得不尋找那個,但基本上我只是給他們模型,並讓他們從那裏適當地調整大小 - 當然他們可以得到它漂亮從視覺上關閉它。

+0

謝謝!超級有用。 – Megatallica

+0

dp應該與sp相同,只是它可以根據用戶的偏好進行更改:http://developer.android.com/guide/topics/resources/more-resources.html#Dimension。此外,由於大多數設備都在XHDPI上工作,並且設計人員不希望爲每個文件更改值(但對XHDPI有效),所以我認爲最好將其除以2。 –

+0

此信息非常有用。我使用這個[calc](http://angrytools.com/android/pixelcalc/)來計算photoshop pt與android sp之間的比率,但它沒有任何意義,直到我看到這個答案並且意識到72 dpi photoshop圖像使1pt爲1dp,我從我的設計師得到的photoshop圖像是300 dpi,所以它使1pt爲4.16dp,我們都知道1dp = 1sp。所以現在它確實是有道理的:) – Rotem

9

與dp(和減去用戶文本大小因子的sp相反),pt幾乎完全相同的物理測量。 Dp或多或少是一個粗略的近似值,因爲它在寬dpi範圍內使用相同的因子。

您不能將pt轉換爲sp,就像Flavio所說的那樣。但是,您可以將pt大致轉換爲dp(在極端情況下+/- 30%,但至少預計爲+/- 10%)。使用DPI水桶

(LDP = 120,MDPI = 160,HDPI = 240,xhdpi = 320)是最通用的轉換因子將是x0.45(=一百二分之七十二* 0.75 =一百六分之七十二* 1 = 72/240 * 1,5 = 72/320 * 2)如果使用精確的dpi桶值。

對於更精確的因素:

  • MDPI(縮放因子:1.0)10.1" WXGA屏幕(149dpi)是0.483076923(=149分之72* 1.0)
  • HDPI(縮放因子:1.5 )Nexus 7(216dpi)是0.5(= 72/216 * 1.5)
  • xhdpi(比例因子:2.0)Nexus 10(300dpi)是0。48(=300分之72* 2)

所以12磅將是對...

  • 10.1" WXGA:24.84dp
  • 的Nexus 7:24 DP
  • Nexus 10的:25dp
  • DPI分組值:26.666dp

你可以使用相同的值SP,但請記住,這些可能會被用戶設置中的/減少。

+0

所以要從pt轉換爲sp/dp,它(大約)是除法計算的2倍,對嗎?在這種情況下,許多在線轉換器如何爲sp/dp獲得巨大價值? –

+0

他們可能使用不同的密度。我在這裏使用的是android pt單元,即android如何顯示每英寸72點的x pt。所以它依賴於密度,如果你有每英寸300點,你的因素會有所不同。 – for3st

+0

難道是因爲PPI的密度配置?PS(和其他圖像編輯工具)上的默認值是72.也許你需要根據你希望使用的密度來改變它,然後它會給你正確的值? –

0

這是一個很好的工具,可以幫助您在各種測量之間進行轉換 - 輸入您所知道的信息,然後計算其餘的值!

http://angrytools.com/android/pixelcalc/

+5

當把32pt放在那裏,你會得到71sp,這是巨大的。這裏真的很奇怪。 –

0

有每英寸72分,和每英寸160 SP(與在設備設置標準字體大小)。這意味着每72分鐘有160sp。 160sp/72pts簡化爲20/9。所以當轉換成pts到sp或dp時,使用pts * 20/9。正如其他人已經提到的那樣,sp會因用戶的設置而異,所以如果您不希望文本大小隨設備設置而改變,請使用dp。

+0

對於您的陳述,您是否有參考「每英寸160 sp」? [Sp包含基於用戶的字體大小首選項的縮放](http://stackoverflow.com/a/2025541/622391),所以從sp到英寸沒有恆定的轉換因子。 –

+0

是的,但如果用戶在其設置中具有正常的字體大小,則它與dp的每英寸基數相同。如果OP不希望字體與用戶的前綴一起改變,那麼他們不應該使用sp,他們應該使用dp。 「一個dp是一個與密度無關的像素,對應於一個像素在160 dpi的物理尺寸。sp是相同的基本單位,但是由用戶的首選文字大小縮放(這是一個與尺度無關的像素),所以你應該在定義文字大小時使用這個測量單位(但不能用於佈局大小)。「 http://developer.android.com/training/multiscreen/screendensities.html – Ethan

+0

然後,你應該澄清你的答案:「每英寸有72點,每英寸有160 sp _with標準字體大小settings_」。您目前只是在旁邊的答案末尾提到這一點。 –

相關問題