Android 使用Picasso加載網(wǎng)絡(luò)圖片等比例縮放的實(shí)現(xiàn)方法
在做android圖片加載的時(shí)候,由于手機(jī)屏幕受限,很多大圖加載過來的時(shí)候,我們要求等比例縮放,比如按照固定的寬度,等比例縮放高度,使得圖片的尺寸比例得到相應(yīng)的縮放,但圖片沒有變形。顯然按照android:scaleType不能實(shí)現(xiàn),因?yàn)闀泻芏嘞拗?,所以必須要自己寫算法?/p>
通過Picasso來縮放
其實(shí)picasso提供了這樣的方法。具體是顯示Transformation 的 transform 方法。
(1) 先獲取網(wǎng)絡(luò)或本地圖片的寬高
(2) 獲取需要的目標(biāo)寬
(3) 按比例得到目標(biāo)的高度
(4) 按照目標(biāo)的寬高創(chuàng)建新圖
Transformation transformation = new Transformation() { @Override public Bitmap transform(Bitmap source) { int targetWidth = mImg.getWidth(); LogCat.i("source.getHeight()="+source.getHeight()); LogCat.i("source.getWidth()="+source.getWidth()); LogCat.i("targetWidth="+targetWidth); if(source.getWidth()==0){ return source; } //如果圖片小于設(shè)置的寬度,則返回原圖 if(source.getWidth()<targetWidth){ return source; }else{ //如果圖片大小大于等于設(shè)置的寬度,則按照設(shè)置的寬度比例來縮放 double aspectRatio = (double) source.getHeight() / (double) source.getWidth(); int targetHeight = (int) (targetWidth * aspectRatio); if (targetHeight != 0 && targetWidth != 0) { Bitmap result = Bitmap.createScaledBitmap(source, targetWidth, targetHeight, false); if (result != source) { // Same bitmap is returned if sizes are the same source.recycle(); } return result; } else { return source; } } } @Override public String key() { return "transformation" + " desiredWidth"; } };
之后在Picasso設(shè)置transform
Picasso.with(mContext) .load(imageUrl) .placeholder(R.mipmap.zhanwei) .error(R.mipmap.zhanwei) .transform(transformation) .into(viewHolder.mImageView);
Transformation 這是Picasso的一個(gè)非常強(qiáng)大的功能了,它允許你在load圖片 -> into ImageView 中間這個(gè)過成對圖片做一系列的變換。比如你要做圖片高斯模糊、添加圓角、做度灰處理、圓形圖片等等都可以通過Transformation來完成。
總結(jié)
以上所述是小編給大家介紹的Android 使用Picasso加載網(wǎng)絡(luò)圖片等比例縮放的實(shí)現(xiàn)方法,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時(shí)回復(fù)大家的!
相關(guān)文章
android查看網(wǎng)絡(luò)圖片的實(shí)現(xiàn)方法
這篇文章主要為大家詳細(xì)介紹了android查看網(wǎng)絡(luò)圖片的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04Android仿考拉全局滑動(dòng)返回及聯(lián)動(dòng)效果的實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于Android仿考拉全局滑動(dòng)返回及聯(lián)動(dòng)效果的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-08-08android SQLite數(shù)據(jù)庫總結(jié)
本文主要介紹了android SQLite數(shù)據(jù)庫的相關(guān)知識。具有一定的參考價(jià)值,下面跟著小編一起來看下吧2017-01-01Android調(diào)用默認(rèn)瀏覽器打開指定Url的方法實(shí)例
業(yè)務(wù)員有需求要將一個(gè)wap站在手機(jī)上以App的形式打開,還不要嵌套WebView,只能以瀏覽器打開.查了點(diǎn)資料,就有了下面這代碼2013-09-09Android利用Glide獲取圖片真正的寬高的實(shí)例
本篇文章主要介紹了Android利用Glide獲取圖片真正的寬高的實(shí)例,具有一定的參考價(jià)值,有興趣的可以了解一下2017-08-08