0

我已閱讀有關不同屏幕尺寸的Android指南,但仍有一些注意事項。`wrap_content`與Density Pixels的工作方式相同嗎?

客戶端給我的圖像來自PSD文件,它具有一定的分辨率,適合於 1080 X 1920。我只是使用wrap_content,它完全符合屏幕的部分 。我不使用DP界定其width-height,如果我是使用DP

它會根據screen sizes有 調整後的圖像。

我的問題是,

  1. 是否wrap_content的工作方式與密度像素一樣嗎?
  2. 它是否也響應,並將圖像width-height根據 更改爲不同的屏幕?
  3. 如果不是,那麼是否需要使用DP來支持不同尺寸的屏幕 ?

感謝

回答

1

設置wrap_content告訴您的視圖大小本身到其內容所需的尺寸。在測試中,您的圖片爲1080x1920,您的設備的屏幕分辨率也可能爲1080x1920,因此非常合適。由於您將寬度和高度設置爲wrap_content,因此Android僅嘗試使用盡可能多的屏幕空間,因爲它需要正確顯示提供的內容量。在這種情況下,由於可用屏幕空間與內容大小相匹配,因此它完全適合。

但是如果設備屏幕不是1080x1920呢?在這種情況下,Android將只使用盡可能多的空間,但仍會嘗試將圖像放在可用屏幕空間的範圍內。換句話說,系統會適當縮放圖像以將其放入您爲其提供的容器中。但是,如果長寬比與圖像不一致,這可能導致難以適應。例如,請參見下面這張截圖:

enter image description here

此圖片是1920×1080,但是請注意,它不太適合。這是因爲在風景中觀看時,這個nexus 7屏幕是1824x1200。此外,屏幕頂部的工具欄正在佔用可用的屏幕空間,使我的可視區域更小且更笨拙。所以雖然系統會喜歡這個圖像一直延伸到左邊界和右邊界,但它不能,因爲那意味着高度會比可視空間大。由於我使用wrap_content來顯示此圖像,因此係統會盡可能多地使用垂直空間,結果是圖像不太適合水平空間。

因此,爲了更直接地解決您的問題,是wrap_content是一個相對大小設置,可以更輕鬆地在多個屏幕尺寸上獲得一致的外觀,類似於使用dp。但要意識到市場上有成百上千個可用的Android設備,並且它們都具有不同的屏幕尺寸和密度。所以你的繪圖可能不會總是以你想要的方式出現在每個設備上。

解決此問題的方法是提供資產的多個版本,併爲不同的屏幕尺寸和密度提供備用佈局文件。一旦你這樣做,你所能做的就是測試,測試和測試更多。使用模擬器來顯示奇怪的屏幕密度或您不擁有的設備,只是爲了確保您獲得想要的外觀。在你的1920x1080圖像的情況下,它在這個設備上看起來很棒,但它如何適合比圖像分辨率更小的大型平板電腦或小手機?這些都是您在設計中必須考慮的情況。

我建議你閱讀這些資源,因爲他們在學習如何應對來自不同的屏幕大小和密度而導致的問題非常有幫助:

http://developer.android.com/guide/practices/screens_support.html http://developer.android.com/training/multiscreen/screensizes.html

相關問題