这一篇我们先来看看photoView整体的结构
简介:
github地址: https://github.com/chrisbanes/PhotoView
android项目依赖方式:allprojects {
repositories {
maven { url "https://jitpack.io" }
}
}
dependencies {
compile 'com.github.chrisbanes:PhotoView:latest.release.here'
}
简单使用方式:
<com.github.chrisbanes.photoview.PhotoView
android:id="@+id/photo_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>主要功能: 支持图片的缩放,移动,旋转
photoView源码架构
我们先来看下photoView源码的都有什么:
- Compat.class :兼容用的,目测是兼容API16之前的动画的(先放一边)
- CustomGestureDetector: 一个自定义的手势检测器,做了很多的手势检测
- 一堆监听: OnGestureListener, OnMatrixChangedListener,
OnOutsidePhotoTapListener, OnPhotoTapListener,
OnScaleChangedListener, OnSingleFlingListener,
OnViewTapListener (一看就明白) - PhotoView : 一看这名字就知道是核心类了,继承了ImageView,然后一个看一大堆set,get方法。?感觉不是很核心唉
- PhotoViewAttacher: 从字面上看他是PhotoView的附加器,实现了触摸,手势检测还有位置改变等监听。并且一大堆业务逻辑,so 这应该才是最核心的咯。
- Util : 一些工具方法
粗略的看了下整体结构,代码并不是很多,感觉主要就PhotoViewAttacher,PhotoView还有CustomGestureDetector这个三个类需要细看看。
本来以为PhotoView会是个核心类呢,结果打开代码一看:
全是set,get方法,股摸着也不是具体实现,在到具体代码看看:
果然里面都是些对PhotoViewAttacher里方法的调用。
so, 我们的研究范围就又缩小了,只要研究PhotoViewAttacher.class和CustomGestureDetector.class就行了。