PhotoView源码解析系列一


这一篇我们先来看看photoView整体的结构

简介:

github地址: https://github.com/chrisbanes/PhotoView
android项目依赖方式:

allprojects {
repositories {
    maven { url "https://jitpack.io" }
}

}
dependencies {
compile 'com.github.chrisbanes:PhotoView:latest.release.here'
}

简单使用方式:

android:id="@+id/photo_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>

主要功能:
支持图片的缩放,移动,旋转

photoView源码架构

我们先来看下photoView源码的都有什么:

photoView源码结构.png
  • Compat.class :兼容用的,目测是兼容API16之前的动画的(先放一边)
  • CustomGestureDetector: 一个自定义的手势检测器,做了很多的手势检测
  • 一堆监听: OnGestureListener, OnMatrixChangedListener,
    OnOutsidePhotoTapListener, OnPhotoTapListener,
    OnScaleChangedListener, OnSingleFlingListener,
    OnViewTapListener (一看就明白)
  • PhotoView : 一看这名字就知道是核心类了,继承了ImageView,然后一个看一大堆set,get方法。?感觉不是很核心唉
  • PhotoViewAttacher: 从字面上看他是PhotoView的附加器,实现了触摸,手势检测还有位置改变等监听。并且一大堆业务逻辑,so 这应该才是最核心的咯。
  • Util : 一些工具方法

粗略的看了下整体结构,代码并不是很多,感觉主要就PhotoViewAttacher,PhotoView还有CustomGestureDetector这个三个类需要细看看。

本来以为PhotoView会是个核心类呢,结果打开代码一看:

photoView.class的代码结构.png

全是set,get方法,股摸着也不是具体实现,在到具体代码看看:

photoView.class具体实现.png

果然里面都是些对PhotoViewAttacher里方法的调用。
so, 我们的研究范围就又缩小了,只要研究PhotoViewAttacher.class和CustomGestureDetector.class就行了。

你可能感兴趣的:(PhotoView源码解析系列一)