最近在實(shí)現(xiàn)一個(gè)類(lèi)似淘寶中的評(píng)論列表的功能,其中要在列表中顯示評(píng)論圖,點(diǎn)擊圖片后顯示大圖進(jìn)行查看,各家app幾乎都會(huì)有這樣的功能。
可以看到,一個(gè)體驗(yàn)較好的查看大圖的基本功能有,
第一,左右滑動(dòng)時(shí)切換圖片;
第二,雙擊或雙指縮放實(shí)現(xiàn)圖片的縮放;
第三,圖片放大時(shí),滑動(dòng)到邊緣繼續(xù)滑動(dòng)時(shí),切換圖片。
因?yàn)槲覀兊腶pp中使用了fresco庫(kù),但fresco提供的SimpleDraweeView不支持縮放,看網(wǎng)上有人擴(kuò)展了SimpleDraweeView,使之支持縮放。但經(jīng)過(guò)漫長(zhǎng)的調(diào)研,發(fā)現(xiàn)fresco近期提供了一個(gè)新的sample:ZoomableDraweeView,專(zhuān)門(mén)用來(lái)支持縮放,欣喜若狂的下載下來(lái)把玩了一把,發(fā)現(xiàn)三個(gè)需求點(diǎn)都滿(mǎn)足!可惜的是,這個(gè)控件在細(xì)節(jié)上有幾點(diǎn)不滿(mǎn)足:雙擊后放大到最大,再雙擊后卻縮小為最小(期望恢復(fù)為正常大?。m然最小可以設(shè)置,但這個(gè)值應(yīng)該是在雙指縮小時(shí)才用到。另一點(diǎn)是在雙指縮小并松開(kāi)后,圖片保持在那個(gè)縮小的尺寸(期望自動(dòng)恢復(fù)為正常大?。?。
查看代碼后發(fā)現(xiàn)需要修改幾點(diǎn)就可以滿(mǎn)足我的需求。下面的內(nèi)容主要記錄我思考問(wèn)題、解決問(wèn)題的思路,如果你也有類(lèi)似的需求,可以直接拿代碼:https://github.com/ibosong/CommentGallery
1. 雙擊恢復(fù)正常尺寸
修改DoubleTapGestureListener 中的onDoubleTapEvent方法,因?yàn)橹饕薷牡倪壿嬙陔p指松開(kāi)后,于是我們?cè)贛otionEvent.ACTION_UP的case中修改相關(guān)邏輯。首先判斷mDoubleTapScroll,即是否是雙擊后不松開(kāi)并滑動(dòng)的操作,這種操作下如果在松開(kāi)手指時(shí),圖片為縮小狀態(tài),應(yīng)當(dāng)恢復(fù)正常大小,所以將原代碼:
if (mDoubleTapScroll) { float scale = calcScale(vp); zc.zoomToPoint(scale, mDoubleTapImagePoint, mDoubleTapViewPoint); }
修改為:
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無(wú)線安全]玩轉(zhuǎn)無(wú)線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞 2017-07-26
- 從棧不平衡問(wèn)題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來(lái)看看(二) 2017-07-26