最近在實現(xiàn)一個類似淘寶中的評論列表的功能,其中要在列表中顯示評論圖,點擊圖片后顯示大圖進行查看,各家app幾乎都會有這樣的功能。

大學生就業(yè)培訓,高中生培訓,在職人員轉(zhuǎn)行培訓,企業(yè)團訓

可以看到,一個體驗較好的查看大圖的基本功能有,

第一,左右滑動時切換圖片;

第二,雙擊或雙指縮放實現(xiàn)圖片的縮放;

第三,圖片放大時,滑動到邊緣繼續(xù)滑動時,切換圖片。

因為我們的app中使用了fresco庫,但fresco提供的SimpleDraweeView不支持縮放,看網(wǎng)上有人擴展了SimpleDraweeView,使之支持縮放。但經(jīng)過漫長的調(diào)研,發(fā)現(xiàn)fresco近期提供了一個新的sample:ZoomableDraweeView,專門用來支持縮放,欣喜若狂的下載下來把玩了一把,發(fā)現(xiàn)三個需求點都滿足!可惜的是,這個控件在細節(jié)上有幾點不滿足:雙擊后放大到最大,再雙擊后卻縮小為最?。ㄆ谕謴蜑檎4笮。m然最小可以設(shè)置,但這個值應該是在雙指縮小時才用到。另一點是在雙指縮小并松開后,圖片保持在那個縮小的尺寸(期望自動恢復為正常大?。?。

查看代碼后發(fā)現(xiàn)需要修改幾點就可以滿足我的需求。下面的內(nèi)容主要記錄我思考問題、解決問題的思路,如果你也有類似的需求,可以直接拿代碼:https://github.com/ibosong/CommentGallery

1. 雙擊恢復正常尺寸

修改DoubleTapGestureListener 中的onDoubleTapEvent方法,因為主要修改的邏輯在雙指松開后,于是我們在MotionEvent.ACTION_UP的case中修改相關(guān)邏輯。首先判斷mDoubleTapScroll,即是否是雙擊后不松開并滑動的操作,這種操作下如果在松開手指時,圖片為縮小狀態(tài),應當恢復正常大小,所以將原代碼:

if (mDoubleTapScroll) {  float scale = calcScale(vp);
  zc.zoomToPoint(scale, mDoubleTapImagePoint, mDoubleTapViewPoint);
}

修改為:

大學生就業(yè)培訓,高中生培訓,在職人員轉(zhuǎn)行培訓,企業(yè)團訓

        		

網(wǎng)友評論