项目间隙研究了下PDF阅读器的代码,发现大部分源码都提供了翻页效果,而没有实现支持翻页的同时支持缩放的效果。下面给出实现的方案。有问题欢迎交流。
实现的整体思路是这样的。在一个相对布局中有两个自定义的view,一个用来翻页,一个用来缩放。初始化载入缩放的View,对这个View进行监听,这里坐了三种监听,翻页监听、缩放监听、点击监听。监听到翻页的时候,启用翻页View的回调,传给翻页View滑动开始的坐标值,然后交换View视图,即翻页View显示,缩放View隐藏。然后开始处理翻页的逻辑。翻页成功后置成初始化成功时的状态。下面贴一下核心代码。
翻页的自定义View用的开源的例子,主要原理就是贝塞尔曲线。这里就不再贴出来了。下面主要介绍下缩放的自定义View。
setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
mScaleDetector.onTouchEvent(event);
PointF curr = new PointF(event.getX(), event.getY());
switch (event.getAction()) {
//判断手指的手势操作,这里为缩放模式
case MotionEvent.ACTION_POINTER_DOWN: