3年前 (2021)
2
导航号,我的单页导航
文章目录

前言

众所周知,PhotoView是一个开源的图片控件。

下面是PhotoView 的介绍

PhotoView 是一款扩展自 Android ImageView ,支持通过单点 / 多点触摸来进行图片缩放的智能控件。

特性:

  1. 支持单点 / 多点触摸,即时缩放图片;

  2. 支持平滑滚动;

  3. 在滑动父控件下能够运行良好;(例如:ViewPager)

虽然Baseflow的PhotoView很好用,但部分需求还是无法满足客户的定制。

正文

山寨的PhotoView的接口跟Baseflow的PhotoView差不多,支持如:

  1. 支持单点 / 多点触摸,即时缩放图片

  2. 支持平滑滚动

  3. 在滑动父控件下能够运行良好

  4. 支持旋转[旋转后支持适配屏幕高宽]

  5. 支持设置缩放和双击tap范围等

当然,部分效果可能没有Baseflow的好,但基本功能都满足。

下载

隐藏内容!
评论后才能查看!

V1.6@PhotoView
  1. 新增双击否以显示区中心点还是当前点进行缩放

  2. 优化双击缩放判断

/**
 * 双击缩放以显示区域中心进行缩放
 */
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(),这个别搞错了。

参考文章

  1. PhotoView

赏一杯可乐

如果觉得OK,欢迎打赏一杯可乐哈,谢谢

有bug,欢迎留言

导航号,我的单页导航

2 条评论

  • 流浪地球
    流浪地球 游客

    V1.5双击缩放图片,双击非图片所在位置(屏幕1920*720,照片图片是800*600)也会进行缩放,这样体验不太好。是否可以改为以显示中心进展缩放?

    回复
    • 改变自己
      改变自己 管理员

      嗯嗯,新增配置条件,默认中心缩放。

      回复