Android 使用Glide加載網絡圖片等比例縮放


在做android圖片加載的時候,由於手機屏幕受限,很多大圖加載過來的時候,我們要求等比例縮放,比如按照固定的寬度,等比例縮放高度,使得圖片的尺寸比例得到相應的縮放,但圖片沒有變形。顯然按照android:scaleType不能實現,因為會有很多限制,所以必須要自己寫算法。 

通過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來完成。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM