2015-02-07 20 views
0

你好,我正在使用不同的文字大小取決於不同的屏幕尺寸。 像:針對不同屏幕尺寸的不同文字大小,使用什麼比例因子?

values-small: dimens.xml -> ? 
values-normal: dimens.xml -> 10sp 
values-large: dimens.xml -> ? 
values-xlarge: dimens.xml -> ? 

我想知道是否有一個公式依賴於小,大,超大,而不是通過測試它在不同的屏幕設置SP的大小來設定合適的尺寸^^?

第二個問題:是值 - 正常必要,isnt「值」文件夾==值 - 正常?

第三個問題:當我爲small,normal和large聲明dimens.xml並且設備是XLARGE設備時會發生什麼情況,它會使用values中的dimens.xml?還是val-normal?或下一個較小的值 - 大?

謝謝

+0

相同的比率LDPI:MDPI:HDPI:xhdpi => 0.75:1:1.5:2 – 2015-02-07 14:20:50

+0

'是值正常neccessary,'NO。 「isnt」值「文件夾==值 - 正常」幾乎。它就像**'drawable'和'drawable-mdpi'用於drawables。 – 2015-02-07 15:42:10

回答

3

我想知道是否有一個公式來設置正確的大小取決於小,大,超大,而不是通過測試它在不同的屏幕設置的SP大小

不是真的。許多應用程序根據屏幕大小根本不更改字體大小,就像大多數Web應用程序不根據瀏覽器窗口大小更改其字體大小一樣。當然,歡迎您爲不同的屏幕尺寸指定不同的<dimen>資源,包括用於文本的尺寸。而且沒有什麼能夠阻止你使用其他人提出的算法;只要理解使用該算法沒有真正的理由。換句話說,一位平面設計師應該告訴你製作文本有多大,而不是計算器。

此外,-small-normal等水桶不被用作多了,有利於更靈活-wNNNdp-hNNNdp-swNNNdp桶。

isnt「values」folder == values-normal?

假設你有res/values-small/res/values/res/values-large/res/values-xlarge/。進一步假設每個資源集定義了一個text_size維度資源,並在佈局中使用它(例如,@dimen/text_size)。然後 甲-normal器件將從res/values-small/拉,因爲-smallsmall屏幕或更大。您的res/values/版本的資源將永遠不會被使用。因此,典型模式將不具有res/values-small/,將您的-small資源置於res/values/,並覆蓋res/values-normal/,res/values-large/res/values-xlarge/中的默認值。

當我爲small,normal和large聲明dimens.xml並且設備是XLARGE設備時,會使用values中的dimens.xml來發生什麼?還是val-normal?或下一個較小的值 - 大?

它應該從res/values-large/中提取,因爲這是合格資源集合中最接近的匹配項。

+0

嗯...那麼,當我有值 - 小文件夾,...正常,大,xlarge - 默認值的文件夾將永遠不會被調用? – Steven 2015-02-07 14:29:07

+0

@Steven:正確。每個屏幕大小都與您的某個特定資源集相匹配。對於像(通常)不依賴於屏幕大小的字符串資源,這是一個問題。 **總是**有一個默認目錄(例如'res/values /')。關鍵在於該目錄中的內容。在希望尺寸因屏幕尺寸(例如填充或邊距)而異的情況下,將最小尺寸放在默認目錄中,並在特定尺寸目錄中覆蓋較大尺寸的值。 – CommonsWare 2015-02-07 14:39:35

+0

'將最小尺寸放在默認目錄中嗯......不是** mdpi **(正常的,不是最小的)等效的? – 2015-02-07 14:41:51

1

我使用的比率爲0.75:1:1.5:2與DPI相同。它工作正常。

1

這是在大多數的Android項目的共同問題,以支持變化的屏幕尺寸。

總之,你可以利用scalable DPscalable Font方法。

Android項目結構固有地允許通過在dimens.xml文件定義它們支持的屏幕尺寸指定不同的字體大小(SP)和餘量的值(DP)。但仍然存在的問題是 - 要使用什麼值? UX設計師通常只提供一套樣式指南(例如,360x640 DP屏幕尺寸),並且不提供所有其他支持的屏幕尺寸。因此,爲其他支持的屏幕尺寸使用正確的價格仍然沒有答案。

一個很好的解決方案(按我的understading)是利用dimens.xml文件現成的可擴展字典,類似於this庫提供文件的字典的東西。在將這些xml文件添加到項目中之後,您只需使用佈局中的鍵,然後Android會自動使用各個目錄中的字體/邊距值。請參考here的視覺差異 - 有和沒有這種方法。

+0

是沒有人試過這個鏈接上建議的庫。第二個對我來說似乎很不錯,方便。我還沒有嘗試第一個,雖然 – gbenroscience 2017-12-06 10:34:32

+1

@gbenroscience,我已經使用了兩個庫(實際上爲支持的屏幕提取了SSP和SDP的映射文件),結果非常令人滿意,現在它已經生產了很長一段時間了! – birender 2017-12-17 09:31:02

+0

我想知道如果這些庫是來自Google之類的用戶,會有什麼樣的反應。無論如何不用擔心,我打算從現在開始使用它們並且傳播它的信息。偉大的工作@birender! – gbenroscience 2017-12-18 09:07:47

相關問題