PictureViewer圖片查看框架里面的Glide沖突

開頭圖片.jpg

前言

近期公司項(xiàng)目要新加一個(gè)功能,就是點(diǎn)擊圖片放大查看以及能夠下載宫蛆。腦子里一想全谤,之前有個(gè)項(xiàng)目里有第三方圖片查看框架pictureViewer。用起來還挺方便的安皱,二話不說直接開始使用调鬓。結(jié)果由于Glide圖片加載框架難住了我一下午。項(xiàng)目中的Glide與pictureViewer里面的Glide沖突酌伊。歷經(jīng)一番折騰才解決腾窝。

造成原因

![GpictureViewer框架和項(xiàng)目總使用的框架不是同一個(gè)版本的Glide。我在項(xiàng)目中使用的是Glide 4.8.0


項(xiàng)目中的Glide.png

而pictureView框架中的是Glide 3.7.0,并且在GitHub里面的更新還是停留在2017年腺晾,估計(jì)已經(jīng)是不維護(hù)了燕锥,不過這個(gè)框架也不是很大,能力好的寫一個(gè)也不是太難悯蝉,但是我們程序員要喜歡偷懶hhhhh归形。


gitHub里框架Glide版本.png

解決辦法

關(guān)于解決辦法我也是費(fèi)了挺長(zhǎng)時(shí)間,試過換一個(gè)框架鼻由,但是換了之后好像還是一樣暇榴。也試過在依賴?yán)锩娼鉀Q沖突

implementation ('com.github.SuperKotlin:PictureViewer:2.0.1'){
          exclude group: 'com.github.bumptech.glide'
}

但還是一樣沒有解決這個(gè)問題。沒辦法蕉世,只能使用最后一種辦法了蔼紧。將GitHub上的項(xiàng)目下載下來并且加入到自己項(xiàng)目里,再修改里面的Glide版本狠轻。那么奸例,要怎么做呢?

第一步:將pictureViewer導(dǎo)入項(xiàng)目

首先將GitHub下載到電腦上、地址:PictureViewer GitHub 地址

pictureViewer.png

然后解壓查吊、解壓之后打開項(xiàng)目中的Android Studio > 點(diǎn)擊File > 鼠標(biāo)移到New > 在移到Import Module并且點(diǎn)擊

1.png

將你下載并且解壓的pictureViewer地址添加到項(xiàng)目中 > 然后點(diǎn)擊Finish (我已經(jīng)添加了谐区,所以Finish不可點(diǎn)擊)


2.png

然后在項(xiàng)目的gradle中的dependencies 加入下面一句,這樣子就完成了導(dǎo)入Module的操作逻卖。

  //圖片查看器
    implementation project (':PictureViewer')

第二步:修改內(nèi)部代碼

首先將Glide換成項(xiàng)目中使用的相同的版本:


位置.png
implementation 'com.github.bumptech.glide:glide:4.8.0'

然后你會(huì)發(fā)現(xiàn)框架里面有報(bào)錯(cuò):

報(bào)錯(cuò)界面.png

原因是當(dāng)你升級(jí)到Glide V4時(shí)宋列,Glide修改以及刪除了一些方法。具體看這篇文章
或者是Glide V4官方文檔
在Glide V4中 .asBitmap()放在了 .with()的后面评也。占位圖和過渡動(dòng)畫等等也進(jìn)行了修改炼杖,并且沒有了SimpleTarget<Bitmap> 這個(gè)方法。那怎么辦呢盗迟?不用著急坤邪,雖然它沒有了SimpleTarget<Bitmap>,但是它還有SimpleTarget<Drawble>這個(gè)方法,我們只需要轉(zhuǎn)換一下就好了罚缕。

修改后(注釋掉的為之前的代碼)

if (!TextUtils.isEmpty(mImageUrl)) {
            /*Glide.with(getActivity())
                    .load(mImageUrl)
                    .asBitmap()
                    .placeholder(mImageLoading)
                    .into(new SimpleTarget<Bitmap>() {
                        @Override
                        public void onResourceReady(Bitmap bitmap, GlideAnimation<? super Bitmap> glideAnimation) {
                            mBitmap = bitmap;
                            mImageView.setImageBitmap(mBitmap);
                            mAttacher.update();
                        }
                    });*/
            DrawableCrossFadeFactory drawableCrossFadeFactory = new DrawableCrossFadeFactory.Builder().setCrossFadeEnabled(true).build();
            Glide.with(getActivity())
                    .load(mImageUrl)
                    .apply(new RequestOptions().placeholder(mImageLoading))
                    .transition(DrawableTransitionOptions.with(drawableCrossFadeFactory))
            .into(new SimpleTarget<Drawable>() {
                @Override
                public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
                    mBitmap=drawableToBitmap(resource);
                    mImageView.setImageBitmap(mBitmap);
                    mAttacher.update();
                }
            });

還有一個(gè)Drawable轉(zhuǎn)換為Bitmap的方法罩扇。

    /**
     * Drawable轉(zhuǎn)換成一個(gè)Bitmap
     *
     * @param drawable drawable對(duì)象
     * @return
     */
    public static final Bitmap drawableToBitmap(Drawable drawable) {
        Bitmap bitmap = Bitmap.createBitmap( drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(),
                drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565);
        Canvas canvas = new Canvas(bitmap);
        drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
        drawable.draw(canvas);
        return bitmap;
    }

好了,到了這一步之后怕磨,就大工告成了。接下來就是如何使用了消约。其實(shí)也是非常的簡(jiǎn)單直接給出代碼:我這里呢是只有單張圖片肠鲫,每次呢就只傳一張圖片,我定義的方法只需要傳入context以及圖片家在地址就好了或粮。如果是多張圖片导饲,只需傳入多張圖片地址的List集合就好。具體詳細(xì)使用看這篇文章 一款漂亮的圖片查看器PictrueViewer

 Tools.showSinglePic(context,Declare.ServerletImgUrl2 + imgUrlList.getFollow_data().get(0).getImages());
    /**
     * 查看單張圖片
     * @param imgUrl
     */
    public static void showSinglePic(Context context,String  imgUrl) {
        ArrayList<String > imgUrls=new ArrayList<>();
        //查看單張氯材,只需要存入一個(gè)圖片值
        if (imgUrls.size()==0){
            imgUrls.add(imgUrl);
        }
        PictureConfig config = new PictureConfig.Builder()
                .setListData(imgUrls)    //圖片數(shù)據(jù)List<String> list
                .setPosition(0)    //圖片下標(biāo)(從第position張圖片開始瀏覽)
                .setDownloadPath("RoadFile")    //圖片下載文件夾地址
//                .setIsShowNumber(true)//是否顯示數(shù)字下標(biāo)
                .needDownload(true)    //是否支持圖片下載
                .setPlacrHolder(R.mipmap.btn_add)    //占位符圖片(圖片加載完成前顯示的資源圖片渣锦,來源drawable或者mipmap)
                .build();
        ImagePagerActivity.startActivity(context, config);
    }

一切準(zhǔn)備就緒了,下面我們來看看結(jié)果:


結(jié)果.gif

總結(jié)

雖然修改的地方不多氢哮,可能也不是很嚴(yán)謹(jǐn)?shù)霓k法袋毙,但是自己搞了幾個(gè)小時(shí),自我感覺慢慢摸索的過程挺不錯(cuò)的冗尤,有點(diǎn)輕微的成就感听盖。哈哈!

碼字不易裂七,望收藏點(diǎn)贊皆看!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市背零,隨后出現(xiàn)的幾起案子腰吟,更是在濱河造成了極大的恐慌,老刑警劉巖徙瓶,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件毛雇,死亡現(xiàn)場(chǎng)離奇詭異嫉称,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)禾乘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門澎埠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人始藕,你說我怎么就攤上這事蒲稳。” “怎么了伍派?”我有些...
    開封第一講書人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵江耀,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我诉植,道長(zhǎng)祥国,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任晾腔,我火速辦了婚禮舌稀,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘灼擂。我一直安慰自己壁查,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開白布剔应。 她就那樣靜靜地躺著睡腿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪峻贮。 梳的紋絲不亂的頭發(fā)上席怪,一...
    開封第一講書人閱讀 51,688評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音纤控,去河邊找鬼挂捻。 笑死,一個(gè)胖子當(dāng)著我的面吹牛嚼黔,可吹牛的內(nèi)容都是我干的细层。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼唬涧,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼疫赎!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起碎节,我...
    開封第一講書人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤捧搞,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體胎撇,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡介粘,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了晚树。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片姻采。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖爵憎,靈堂內(nèi)的尸體忽然破棺而出慨亲,到底是詐尸還是另有隱情,我是刑警寧澤宝鼓,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布刑棵,位于F島的核電站,受9級(jí)特大地震影響愚铡,放射性物質(zhì)發(fā)生泄漏蛉签。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一沥寥、第九天 我趴在偏房一處隱蔽的房頂上張望碍舍。 院中可真熱鬧,春花似錦邑雅、人聲如沸乒验。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至狂塘,卻和暖如春录煤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背荞胡。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來泰國打工妈踊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人泪漂。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓廊营,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親萝勤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子露筒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

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