前言
众所周知,PhotoView是一个开源的图片控件。
下面是PhotoView 的介绍
PhotoView 是一款扩展自 Android ImageView ,支持通过单点 / 多点触摸来进行图片缩放的智能控件。
特性:
支持单点 / 多点触摸,即时缩放图片;
支持平滑滚动;
在滑动父控件下能够运行良好;(例如:ViewPager)
虽然Baseflow的PhotoView很好用,但部分需求还是无法满足客户的定制。
正文
山寨的PhotoView的接口跟Baseflow的PhotoView差不多,支持如:
支持单点 / 多点触摸,即时缩放图片
支持平滑滚动
在滑动父控件下能够运行良好
支持旋转[旋转后支持适配屏幕高宽]
支持设置缩放和双击tap范围等
当然,部分效果可能没有Baseflow的好,但基本功能都满足。
下载
V1.6@PhotoView
优化双击缩放判断
/** * 双击缩放以显示区域中心进行缩放 */ private boolean mDoubleTapZoomCenter = true; public void setDoubleTapZoomCenter(boolean doubleTapZoomCenter) { mDoubleTapZoomCenter = doubleTapZoomCenter; }
使用
把PhotoView.jar放入/libs/中
implementation fileTree(include: ['*.jar'], dir: 'libs')
常用方法
//单机击监听 mPhotoView.setOnSingleTapListener(mOnSingleTapListener);
//scale变化监听 mPhotoView.setOnScaleChangedListener(mOnScaleChangeListener)
//是否支持双击 mPhotoView.setCanDoubleTap(true);
//适配可显示区域 mPhotoView.setScreenSize(MediaUtils.getScreenWidth(), MediaUtils.getScreenHeight());
一般图片全屏显示,但是也存在不全屏显示。
//旋转角度 mPhotoView.setRotation(angle)
//放大 mPhotoView.zoomIn() //传入的值越大,放大越快 mPhotoView.setScaleFactor(1.1f)
//缩小 mPhotoView.zoomOut() //传入的值越小,缩放越快 mPhotoView.setScaleFactor(0.9f)
//恢复默认状态 mPhotoView.resetDefault()
如果是显示区域变化了[全屏和非全屏切换],导致图片显示区域不一样时,不能调用resetDefault()会有问题
mPhotoView.resetTranslate(); loadImage();//自己实现的。
这个jar,需要传入setScreenSize(),这个别搞错了。
参考文章
《
赏一杯可乐
如果觉得OK,欢迎打赏一杯可乐哈,谢谢
有bug,欢迎留言
© 版权声明
V1.5双击缩放图片,双击非图片所在位置(屏幕1920*720,照片图片是800*600)也会进行缩放,这样体验不太好。是否可以改为以显示中心进展缩放?
嗯嗯,新增配置条件,默认中心缩放。