• 闲来无事,用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,笔者先谢过了!

PhotoView踩坑相关推荐

  1. 【golang程序包推荐分享】分享亿点点golang json操作及myJsonMarshal程序包开发的踩坑经历 :)

    目录[阅读时间:约5分钟] 一.概述 1.Json的作用 2.Go官方 encoding/json 包 3. golang json的主要操作 二.Json Marshal:将数据编码成json字符串 ...

  2. java调用clang编译的so_写Java这么久,JDK源码编译过没?编译JDK源码踩坑纪实

    好奇害死羊 很多小伙伴们做Java开发,天天写Java代码,肯定离不开Java基础环境:JDK,毕竟我们写好的Java代码也是跑在JVM虚拟机上. 一般来说,我们学Java之前,第一步就是安装JDK环 ...

  3. python导入类有红线_python踩坑系列之导入包时下划红线及报错“No module named”问题...

    python踩坑系列之导入包时下划红线及报错"No module named"问题 使用pycharm编写Python时,自己写了一个包(commontool),在同级另一个路径下 ...

  4. mysql运维工资_MySQL运维踩坑

    image ZERO 背景 本文主要是介绍在MySQL使用运维过程中所遇到的一些坑爹的地方,予自己以做记录! 前言 因操作系统重装之后,安装了mysql5.7,而由此带来了一系列的问题,现将解决这些m ...

  5. 微信跳一跳高分辅助踩坑

    旧博文,搬到 csdn 原文:http://rebootcat.com/2018/01/08/wechat_jump_hack/ 最近挺火的微信跳一跳 最近新版微信的『跳一跳』小程序着实火了一把,也把 ...

  6. 【踩坑记录】记一次MySQL主从复制延迟的坑

    最近开发中遇到的一个MySQL主从延迟的坑,记录并总结,避免再次犯同样的错误. 情景 一个活动信息需要审批,审批之后才能生效.因为之后活动要编辑,编辑后也可能触发审批,审批中展示的是编辑前的活动内容, ...

  7. 分布式深度学习最佳入门(踩坑)指南

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨Lyon@知乎(已授权) 来源丨https://zhuanla ...

  8. python array赋值_从踩坑学Python内部原理(5):执行时机的差异

    (给Python开发者加星标,提升Python技能) 英文:Satwik Kansal,翻译:暮晨 Python开发者整理自 GitHub [导读]:Python 是一个设计优美的解释型高级语言,它提 ...

  9. 小程序统一服务消息_[miniblog]小程序订阅消息踩坑记

    有阵子没有更新我的mini-blog了,这次把推送消息那块做了些改动,小程序的模板消息即将废弃,订阅消息终于来了. 关于订阅消息 订阅消息分为一次性订阅和长期订阅,长期订阅就不说啦,不是个人号可以染指 ...

最新文章

  1. rust怎么用items刷东西_装修贷卡怎么刷?不同银行的用不同的POS机刷才对
  2. python打印出指定目录下的所有文件夹和文件名(递归实现)
  3. 如何配置三层交换机创建VLAN
  4. 【济宁百瑞达机械设备有限公司——文化拓展学习】2018技术展望:利用现有IT投资扩大云部署...
  5. [转+个人整理]从D触发器的逻辑结构说明建立时间和保持时间
  6. JAVA进阶教学之(StrngBuffer进行字符串拼接)
  7. 巾帼不让须眉——女生做运维,一样可以很好
  8. 从Windows复制文件到Linux显示乱码问题
  9. 基于OneAPM的Web系统性能监测
  10. ssis for循环容器_使用SSIS ForEach Loop容器以日期顺序处理文件
  11. apache配置cgi出错_Apache配置实现cgi-阿里云开发者社区
  12. Unity3D基础37:Input控制面板
  13. 科立捷默认频率_科立捷电子产品技术参数.doc
  14. 一个核函数把低维空间映射到高维空间的例子
  15. 【对数几率回归】matlab实现
  16. 树莓派人脸打卡机(考勤机)(Python)
  17. arch模型的思路_ARCH模型的应用
  18. c4d语言包英文,Maxon Cinema 4D R23(C4D R23)中英文安装及设置详细教程(附下载)
  19. 电脑突然找不到蓝牙开关了
  20. [agc015f]Kenus the Ancient Greek

热门文章

  1. windows subst命令实现原理模拟3 - subst挂载目录为盘符
  2. 浅显易懂 Makefile 入门 (05)— 字符串处理函数(patsubst、subst、strip、findstring、filter、filter-out、sort、word)
  3. 人脸速通门管理服务器型号,20200227_1626723_EGS531-PM_EGS551-PM-人脸速通门管理服务器快速入门-V2.00_804545_194214_0.pdf...
  4. 阿里云高性能AI服务 -- 基于Docker和EGS一键创建高性能Tensorflow分布式训练
  5. IO多路复用原理(大白话,通俗易懂)
  6. Property or method “item“ is not defined on the instance but referenced during render.
  7. 盲注 mysql 密码_Mysql盲注技巧
  8. 九十年代计算机及应用,全国计算机等级考试历史发展
  9. MATLAB-SIMULINK-二极管搭建整流电路(2)
  10. vue 路由嵌套(子路由)注意“/“斜杆问题