Glide 加載圓角圖片大小不一的問(wèn)題

??最近開(kāi)發(fā)中遇到一個(gè)Glide加載圖片的問(wèn)題,具體表現(xiàn)為同一個(gè)列表源梭,各個(gè)item中ImageView需要裁剪相同大小的圓角徘郭,而使用測(cè)試數(shù)據(jù)填充時(shí)出現(xiàn)了不同item圓角大小不一的情況,這是截圖承疲∪技可以看到冲呢,第一項(xiàng)的圖片圓角明顯比其他的大很多,而且裁剪區(qū)域很模糊招狸。
??對(duì)于這種情況敬拓,開(kāi)始我嘗試了修改scaleType屬性和Glide中修改asBitmap()、centerCrop()裙戏、fitCenter()等方法都沒(méi)有效果乘凸。然后我懷疑是ListView布局復(fù)用的問(wèn)題,可是禁掉了ListView布局優(yōu)化之后還是老樣子挽懦。

Adapter :

 public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        if (null == convertView) {
            convertView = LayoutInflater.from(mContext).inflate(R.layout.item_star_topic, null);
            holder = new ViewHolder(convertView);
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }
        if (!TextUtils.isEmpty(mList.get(position).getPic())) {
            Glide.with(mContext).load(mList.get(position).getPic())
                    .transform(new GlideRoundTransform(mContext, 3))
                    .into(holder.mTopicPic);
        }
     }

GlideRoundTransform :

 public GlideRoundTransform(Context context, int dp) {
        super(context);
        radius = Resources.getSystem().getDisplayMetrics().density * dp;
    }

    @Override
    protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {
        return roundCrop(pool, toTransform);
    }

    private static Bitmap roundCrop(BitmapPool pool, Bitmap source) {
        if (source == null) return null;

        Bitmap result = pool.get(source.getWidth(), source.getHeight(), Bitmap.Config.ARGB_8888);
        if (result == null) {
            result = Bitmap.createBitmap(source.getWidth(), source.getHeight(), Bitmap.Config.ARGB_8888);
        }

        Canvas canvas = new Canvas(result);
        Paint paint = new Paint();
        paint.setShader(new BitmapShader(source, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP));
        paint.setAntiAlias(true);
        RectF rectF = new RectF(0f, 0f, source.getWidth(), source.getHeight());
        canvas.drawRoundRect(rectF, radius, radius, paint);
        return result;
    }

??其中adapter中是普通的加載圖片,只是在Glide中加了transform來(lái)實(shí)現(xiàn)圓角裁剪木人,GlideRoundTransform是從其他博客借鑒的信柿,之前用的都沒(méi)有問(wèn)題,自己想不通醒第,就求助大神解答吧渔嚷。
??我在github的glide項(xiàng)目下提了一個(gè)issue,希望有人可以幫忙稠曼,很快得到了回復(fù)形病,他覺(jué)得是圖片尺寸的問(wèn)題,我也用他推薦的override()方法來(lái)重寫(xiě)圖片大小之后再進(jìn)行裁剪,但沒(méi)有效果漠吻,代碼如下:

Glide.with(mContext).load(mList.get(position).getPic())
                    .override(750,350)
                    .transform(new GlideRoundTransform(mContext, 3))
                    .into(holder.mTopicPic);

??然后他問(wèn)為什么第一張圖看著這么模糊量瓜,我才意識(shí)到可能是測(cè)試數(shù)據(jù)出了問(wèn)題,然后也確實(shí)是這樣的途乃,第一張圖第二張圖尺寸明顯不一樣绍傲,而自定義的GlideRoundTransform是將原始在原始圖片的基礎(chǔ)上裁剪相應(yīng)大小的圓角,對(duì)于尺寸小的圖片裁剪完之后放到固定大小的ImageView中耍共,肯定會(huì)變形烫饼。
??最終的解決方案 :

Glide.with(mContext).load(mList.get(position).getPic())
                    .override(750,350)
                    .transform(new fitCenter(),new GlideRoundTransform(mContext, 3))
                    .into(holder.mTopicPic);

??非常簡(jiǎn)單,就是使用了transfrom的重載方法试读,在傳進(jìn)去transfrom的同時(shí)傳入一個(gè)fitcenter(),先將圖片變換為固定的大小杠纵,然后在此基礎(chǔ)上在進(jìn)行裁剪,再次運(yùn)行之后所有的項(xiàng)的圓角就看著一般大了钩骇。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末比藻,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子伊履,更是在濱河造成了極大的恐慌韩容,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件唐瀑,死亡現(xiàn)場(chǎng)離奇詭異群凶,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)哄辣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén)请梢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人力穗,你說(shuō)我怎么就攤上這事毅弧。” “怎么了当窗?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵够坐,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我崖面,道長(zhǎng)元咙,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任巫员,我火速辦了婚禮庶香,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘简识。我一直安慰自己赶掖,他們只是感情好感猛,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著奢赂,像睡著了一般陪白。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上呈驶,一...
    開(kāi)封第一講書(shū)人閱讀 49,741評(píng)論 1 289
  • 那天拷泽,我揣著相機(jī)與錄音,去河邊找鬼袖瞻。 笑死司致,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的聋迎。 我是一名探鬼主播脂矫,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼霉晕!你這毒婦竟也來(lái)了庭再?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤牺堰,失蹤者是張志新(化名)和其女友劉穎拄轻,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體伟葫,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡恨搓,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了筏养。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片斧抱。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖渐溶,靈堂內(nèi)的尸體忽然破棺而出辉浦,到底是詐尸還是另有隱情,我是刑警寧澤茎辐,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布宪郊,位于F島的核電站,受9級(jí)特大地震影響拖陆,放射性物質(zhì)發(fā)生泄漏弛槐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一慕蔚、第九天 我趴在偏房一處隱蔽的房頂上張望丐黄。 院中可真熱鬧斋配,春花似錦孔飒、人聲如沸灌闺。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)桂对。三九已至,卻和暖如春鸠匀,著一層夾襖步出監(jiān)牢的瞬間蕉斜,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工缀棍, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留宅此,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓爬范,卻偏偏與公主長(zhǎng)得像父腕,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子青瀑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容