在作android圖片加載的時候,因爲手機屏幕受限,不少大圖加載過來的時候,咱們要求等比例縮放,好比按照固定的寬度,等比例縮放高度,使得圖片的尺寸比例獲得相應的縮放,但圖片沒有變形。顯然按照android:scaleType不能實現,由於會有不少限制,因此必需要本身寫算法。 android
經過Glide來縮放
其實glide提供了這樣的方法。具體是顯示繼承Transformation 的 setResource 方法。
(1) 先獲取網絡或本地圖片的寬高
(2) 獲取須要的目標寬
(3) 按比例獲得目標的高度
(4) 按照目標的寬高建立新圖算法
/** * =========================================== * 版 本:1.0 * 描 述:設置圖片等比縮放 * <p>glide處理圖片.</p> * =========================================== */ public class TransformationUtils extends ImageViewTarget<Bitmap> { private ImageView target; public TransformationUtils(ImageView target) { super(target); this.target = target; } @Override protected void setResource(Bitmap resource) { view.setImageBitmap(resource); //獲取原圖的寬高 int width = resource.getWidth(); int height = resource.getHeight(); //獲取imageView的寬 int imageViewWidth = target.getWidth(); //計算縮放比例 float sy = (float) (imageViewWidth * 0.1) / (float) (width * 0.1); //計算圖片等比例放大後的高 int imageViewHeight = (int) (height * sy); ViewGroup.LayoutParams params = target.getLayoutParams(); params.height = imageViewHeight; target.setLayoutParams(params); } }
以後在Glide設置transform網絡
Glide.with(this) .load(newActiviteLeftBannerUrl) .asBitmap() .placeholder(R.drawable.placeholder) .into(new TransformationUtils(target));
Transformation 這是Glide的一個很是強大的功能了,它容許你在load圖片 -> into ImageView 中間這個過成對圖片作一系列的變換。好比你要作圖片高斯模糊、添加圓角、作度灰處理、圓形圖片等等均可以經過Transformation來完成。ide