2015-07-19 31 views
1

針對一臺設備進行了優化後,圖像視圖按照佈局中定義的正確比例顯示。但是,如何進一步實現這一點,並使各種圖像視圖在不同設備之間進行縮放?如何在不同設備上保持原始圖像視圖比例?

android:layout_width="fill_parent" 
android:layout_height="fill_parent" 

半相關的問題的一些建議包括嘗試:

android:adjustViewBounds="true" 

這並沒有改變任何東西。

的附加細節:

 android:layout_width="100dp" 
     android:layout_height="100dp" 

寬度和的圖像視圖高度已被定義。這是什麼阻止設備根據可用的屏幕空間縮放各種圖像視圖?

回答

1

歡迎來到這個痛苦的事情! :)

基本上

如果你有在你的圖像尺寸控制(使用如繪項目,資產或預先定義大小的圖像資源的情況下),你只需要做一些積分,以保證您的ImageView有正確的大小,以適應不同屏幕上的圖像。

該框架已經在Runtime提供這種類型的API的API,但你甚至不需要在代碼中完成。通常,在與UI設計師合作時,他們將(應該)向您提供複雜視圖的所有屏幕密度和UI元素的測量規格,或至少遵循基本密度(MDPI)的規格,以便您可以自己計算其餘部分。無論哪種方式,您都可以獲得這些值,並根據您的密度使用它以values/dimens。正如你已經看到的那樣,使用scaleType=fitXYadjustViewBounds=true,你很好走。引用的數量:

當你沒有在圖像尺寸

當你有控制無法控制您需要顯示的圖像大小(當它是例如上傳到沒有尺寸規則的地方),您可以採用幾種方法來將縱橫比保持在Runtime。你可以尋找這個,並使用似乎最能爲你服務的東西。最近,我一直在使用Picasso作爲我的圖像加載程序,並找到了一種方法,不用調整圖像的大小(即使畢加索在需要時調整圖像大小),但要用一種非常簡單和優雅的方法繞過這種情況:

Picasso.with(context).load("image_url").fit().centerCrop().into(imageView); 

這會產生這種行爲,就像在WhatsApp的:

enter image description here 當圖像不得到扭曲和主要部分(中心)顯示,無論ImageView的大小。當然,您仍然應該根據當前的屏幕尺寸和密度使用正確尺寸的視圖,以確保獲得最佳體驗。

相關問題