PhotoView踩坑

  •  闲来无事,用PhtoView做一个跟QQ空间一样的图片查看器。接下来说说在途中遇到的坑!

先看看效果图吧,跟QQ差不多


废话不多说,直接上代码干:

    PhotoView源码地址:https://github.com/chrisbanes/PhotoView

     引入PhotoView,gradle地址为:compile 'com.github.chrisbanes:PhotoView:1.2.6'

   主要介绍Viewpager中的PhotoView的坑,在使用PhotoView时发现setOnLongClickListener还有  setOnDoubleTapListener......等回调接口,就是没发现单击事件的回调接口,算了想着自己自定义MyPhotoView继承PhotoView,然后直线setOnClickListener接口走自己的回调......一切都想得那么完美,但现实很残酷,点击事件完全没效果,想想应该是事件应该在PhotoView中已经消耗了,这条路是走不通了。第二条路,反正就是点击大图关闭嘛,就从最外层布局LinearLayout入手,把单击事件给父布局消耗,结果不尽人意,点PhotoView以外的区域可以实现点击事件,想都不用想,PhotoView将事件拦截了或准则请求父布局不拦截事件

     parent.requestDisallowInterceptTouchEvent(true);(关键代码,请求父布局放行)

结果虽然能大致呈现出来了,但是有强迫症的我不会让我的东西有残缺的,直接看源码,按道理来说,这么优秀的作者不应该会犯不处理点击事件的小错误吧。从PhotoView入手,到PhotoViewAttacher,果不其然在PhotoViewAttacher中我发现了setOnClickListener,直接搜索到点击事件的位置,发现作者把单击事件放到setOnDoubleTapListener中去了。

    问题发现了,解决起来就简单了,直接在ViewPager适配器中添加双加事件就好了,注意在添加单击事件的时候,也需要重写双击事件,不然PhotoView本身的双加放大也失效了。事件代码如下




好了,采坑到此结束,附上Demo地址:Demo

如有大佬觉得有问题欢迎issue,如果觉得对大家有用的话,不妨给个Star或Fork,笔者先谢过了!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值