最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android 使用Picasso加載網(wǎng)絡(luò)圖片等比例縮放的實(shí)現(xiàn)方法

 更新時(shí)間:2018年08月05日 09:39:16   作者:記錄自己的點(diǎn)點(diǎn)滴滴  
在做android圖片加載的時(shí)候,由于手機(jī)屏幕受限,很多大圖加載過來的時(shí)候,我們要求等比例縮放,接下來小編給大家?guī)砹薃ndroid 使用Picasso加載網(wǎng)絡(luò)圖片等比例縮放的實(shí)現(xiàn)方法,感興趣的朋友一起看看吧

在做android圖片加載的時(shí)候,由于手機(jī)屏幕受限,很多大圖加載過來的時(shí)候,我們要求等比例縮放,比如按照固定的寬度,等比例縮放高度,使得圖片的尺寸比例得到相應(yīng)的縮放,但圖片沒有變形。顯然按照android:scaleType不能實(shí)現(xiàn),因?yàn)闀?huì)有很多限制,所以必須要自己寫算法。

通過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è)過成對(duì)圖片做一系列的變換。比如你要做圖片高斯模糊、添加圓角、做度灰處理、圓形圖片等等都可以通過Transformation來完成。

參考文章: https://stackoverflow.com/questions/21889735/resize-image-to-full-width-and-variable-height-with-picasso

總結(jié)

以上所述是小編給大家介紹的Android 使用Picasso加載網(wǎng)絡(luò)圖片等比例縮放的實(shí)現(xiàn)方法,希望對(duì)大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!

相關(guān)文章

  • Android使用多線程實(shí)現(xiàn)斷點(diǎn)下載

    Android使用多線程實(shí)現(xiàn)斷點(diǎn)下載

    這篇文章主要介紹了Android使用多線程實(shí)現(xiàn)斷點(diǎn)下載,多線程下載是加快下載速度的一種方式,感興趣的小伙伴們可以參考一下
    2016-03-03
  • Android開發(fā)之獲取單選與復(fù)選框的值操作示例

    Android開發(fā)之獲取單選與復(fù)選框的值操作示例

    這篇文章主要介紹了Android開發(fā)之獲取單選與復(fù)選框的值操作,結(jié)合實(shí)例形式分析了Android針對(duì)單選按鈕、復(fù)選框的事件響應(yīng)、數(shù)值獲取等相關(guān)操作技巧,需要的朋友可以參考下
    2019-04-04
  • Android Studio 一個(gè)工程打包多個(gè)不同包名的APK實(shí)例詳解

    Android Studio 一個(gè)工程打包多個(gè)不同包名的APK實(shí)例詳解

    這篇文章主要介紹了Android Studio 一個(gè)工程打包多個(gè)不同包名的APK,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • kotlin中泛型中in和out的區(qū)別解析

    kotlin中泛型中in和out的區(qū)別解析

    在Kotlin泛型中,in關(guān)鍵字主要用于定義逆變(Contravariance),它表示一個(gè)泛型類型參數(shù)可以是指定類型或者它的超類型,這篇文章主要介紹了kotlin中泛型中in和out的區(qū)別解析,需要的朋友可以參考下
    2024-12-12
  • Android使用Handler實(shí)現(xiàn)View彈性滑動(dòng)

    Android使用Handler實(shí)現(xiàn)View彈性滑動(dòng)

    這篇文章主要介紹了Android使用Handler實(shí)現(xiàn)View彈性滑動(dòng),介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-08-08
  • Android自定義View仿支付寶輸入六位密碼功能

    Android自定義View仿支付寶輸入六位密碼功能

    跟選擇銀行卡界面類似,也是用一個(gè)PopupWindow,不過輸入密碼界面是一個(gè)自定義view,當(dāng)輸入六位密碼完成后用回調(diào)在Activity中獲取到輸入的密碼并以Toast顯示密碼。這篇文章主要介紹了Android自定義View仿支付寶輸入六位密碼功能的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • Android截取指定View為圖片的實(shí)現(xiàn)方法

    Android截取指定View為圖片的實(shí)現(xiàn)方法

    這篇文章主要為大家詳細(xì)介紹了Android截取指定View為圖片的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • Android四大組件之broadcast廣播使用講解

    Android四大組件之broadcast廣播使用講解

    Android開發(fā)的四大組件分別是:活動(dòng)(activity),用于表現(xiàn)功能;服務(wù)(service),后臺(tái)運(yùn)行服務(wù),不提供界面呈現(xiàn);廣播接受者(Broadcast Receive),勇于接收廣播;內(nèi)容提供者(Content Provider),支持多個(gè)應(yīng)用中存儲(chǔ)和讀取數(shù)據(jù),相當(dāng)于數(shù)據(jù)庫(kù),本篇著重介紹廣播組件
    2022-12-12
  • Android Activity的4種啟動(dòng)模式圖文介紹

    Android Activity的4種啟動(dòng)模式圖文介紹

    這篇文章主要給大家介紹了關(guān)于Android Activity的4種啟動(dòng)模式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Android中判斷是否聯(lián)網(wǎng)實(shí)現(xiàn)代碼

    Android中判斷是否聯(lián)網(wǎng)實(shí)現(xiàn)代碼

    這篇文章主要介紹了Android中判斷是否聯(lián)網(wǎng)實(shí)現(xiàn)代碼,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2015-06-06

最新評(píng)論

大埔区| 奉化市| 周口市| 高雄县| 师宗县| 赞皇县| 阿克苏市| 商水县| 泸定县| 巩留县| 南安市| 五莲县| 阿瓦提县| 东城区| 区。| 信丰县| 海阳市| 德保县| 台前县| 惠水县| 丹江口市| 宣恩县| 崇义县| 根河市| 定南县| 和硕县| 平邑县| 顺义区| 尼木县| 浦城县| 包头市| 万州区| 漳州市| 青海省| 乳源| 沅江市| 岑溪市| 龙游县| 宁陕县| 梨树县| 宜宾县|