Android 使用Glide加載網(wǎng)絡(luò)圖片等比例縮放的實(shí)現(xiàn)方法
在做android圖片加載的時(shí)候,由于手機(jī)屏幕受限,很多大圖加載過(guò)來(lái)的時(shí)候,我們要求等比例縮放,比如按照固定的寬度,等比例縮放高度,使得圖片的尺寸比例得到相應(yīng)的縮放,但圖片沒(méi)有變形。顯然按照android:scaleType不能實(shí)現(xiàn),因?yàn)闀?huì)有很多限制,所以必須要自己寫(xiě)算法。
通過(guò)Glide來(lái)縮放
其實(shí)glide提供了這樣的方法。具體是顯示繼承Transformation 的 setResource 方法。
(1) 先獲取網(wǎng)絡(luò)或本地圖片的寬高
(2) 獲取需要的目標(biāo)寬
(3) 按比例得到目標(biāo)的高度
(4) 按照目標(biāo)的寬高創(chuàng)建新圖
/** * =========================================== * 版 本:1.0 * 描 述:設(shè)置圖片等比縮放 * <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(); //計(jì)算縮放比例 float sy = (float) (imageViewWidth * 0.1) / (float) (width * 0.1); //計(jì)算圖片等比例放大后的高 int imageViewHeight = (int) (height * sy); ViewGroup.LayoutParams params = target.getLayoutParams(); params.height = imageViewHeight; target.setLayoutParams(params); } }
之后在Glide設(shè)置transform
Glide.with(this) .load(newActiviteLeftBannerUrl) .asBitmap() .placeholder(R.drawable.placeholder) .into(new TransformationUtils(target));
Transformation 這是Glide的一個(gè)非常強(qiáng)大的功能了,它允許你在load圖片 -> into ImageView 中間這個(gè)過(guò)成對(duì)圖片做一系列的變換。比如你要做圖片高斯模糊、添加圓角、做度灰處理、圓形圖片等等都可以通過(guò)Transformation來(lái)完成。
總結(jié)
以上所述是小編給大家介紹的Android 使用Glide加載網(wǎng)絡(luò)圖片等比例縮放的實(shí)現(xiàn)方法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Android開(kāi)發(fā)中Bitmap高效加載使用詳解
在Android開(kāi)發(fā)中,我們經(jīng)常與Bitmap打交道,而對(duì)Bitmap的不恰當(dāng)?shù)牟僮鹘?jīng)常會(huì)導(dǎo)致OOM(Out of Memory)。這篇文章我們會(huì)介紹如何高效地在Android開(kāi)發(fā)中使用Bitmap,在保證圖片顯示質(zhì)量的前提下盡可能占用更小的內(nèi)存。2017-12-12基于Android應(yīng)用中如何反饋Crash報(bào)告的詳解
本篇文章是對(duì)在Android應(yīng)用中如何反饋Crash報(bào)告的詳細(xì)分析介紹。需要的朋友參考下2013-05-05Android開(kāi)發(fā)Jetpack組件ViewModel與LiveData使用講解
Jetpack是一個(gè)由多個(gè)技術(shù)庫(kù)組成的套件,可幫助開(kāi)發(fā)者遵循最佳做法,減少樣板代碼并編寫(xiě)可在各種Android版本和設(shè)備中一致運(yùn)行的代碼,讓開(kāi)發(fā)者精力集中編寫(xiě)重要的代碼2022-09-09Android提高之使用NDK把彩圖轉(zhuǎn)換灰度圖的方法
這篇文章主要介紹了Android使用NDK把彩圖轉(zhuǎn)換灰度圖的方法,在Android項(xiàng)目開(kāi)發(fā)中有一定的實(shí)用價(jià)值,需要的朋友可以參考下2014-08-08Flutter使用JsBridge方式處理Webview與H5通信的方法
這篇文章主要介紹了Flutter使用JsBridge方式處理Webview與H5通信的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04Android開(kāi)發(fā)時(shí)盡管已root但是ddms還是沒(méi)有data路徑怎么辦
這篇文章主要介紹了Android開(kāi)發(fā)時(shí)盡管已root但是ddms還是沒(méi)有data路徑怎么辦的相關(guān)資料,需要的朋友可以參考下2015-12-12在Android系統(tǒng)源碼中預(yù)置APK的方法
今天小編就為大家分享一篇關(guān)于在Android系統(tǒng)源碼中預(yù)置APK的方法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12Android編程實(shí)現(xiàn)圖片放大縮小功能ZoomControls控件用法實(shí)例
這篇文章主要介紹了Android編程實(shí)現(xiàn)圖片放大縮小功能ZoomControls控件用法,結(jié)合具體實(shí)例形式分析了Android ZoomControls控件實(shí)現(xiàn)圖片縮放的具體操作方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-09-09Android如何實(shí)現(xiàn)翻轉(zhuǎn)動(dòng)畫(huà)效果(卡片翻轉(zhuǎn))
卡片翻轉(zhuǎn)這個(gè)效果大家應(yīng)該都不陌生,這篇文章主要給大家介紹了關(guān)于Android如何實(shí)現(xiàn)翻轉(zhuǎn)動(dòng)畫(huà)效果的相關(guān)資料,文中將實(shí)現(xiàn)的源代碼以及過(guò)程中遇到的bug都介紹的非常詳細(xì),需要的朋友可以參考下2021-08-08