方法一:客戶端等比例
前提條件:服務器端需要返回原始圖片的“寬和高”或者“寬高縮放比例”,客戶端要顯示的圖片的寬或者高只要其一是固定的(例如:高度為200,寬度未知,或者高度為400寬度未知)
在這種條件下客戶端可以根據服務端返回的圖片的寬高或者寬高比例計算出圖片相對於屏幕的寬或者高。例如:縮放比例為:寬(圖片原始寬度200px)/高(圖片原始高度400px) = 0.5 。客戶端定義要顯示的寬度為100px,則根據縮放比例高度應該顯示200px(100/0.5=200)圖片才不會變形。android:scaleType="fitXY"
方法二:服務端等比例
前提條件:客戶端必須告訴服務端他要拿到的圖片的寬度和高度。
服務端根據客戶端給出的寬高,按照服務端能給到的最優方案返回一張按照等比例縮放的縮略圖,給客戶端顯示 android:scaleType="fitXY"
方法三:客戶端+服務端都等比例縮放
方法一和方法二都能夠在一定程度上解決圖片按等比例方式顯示,但是都具有一定的不足,第一種方法的不足之處是:服務端返回的圖片是原圖,比較浪費流量和手機內存。第二中方法的不足之處是,有時候客戶端給到服務端的寬高,服務端並不能夠按照客戶端的要求
返回。因此在顯示上會出現一定的拉伸或者壓縮。
比較好的一種方法是:第一種方法+第二種方法。首先服務端會給到客戶端原始圖片的寬高比例,客戶端根據寬高比例,計算出最優的要顯示到界面上的寬和高給到服務器。服務器拿到客戶端給的寬高之后,計算出一個縮略圖給到客戶端,之后客戶端拿到這張圖片直接顯示。android:scaleType="fitXY"
