
基于手势的图片预览与缩放
场景一:对图片进行放大、缩小、拖拽移动,且放大过程中也可同时进行拖拽操作
方案
1、使用组合手势GestureGroup,同时绑定捏合手势PinchGesture和滑动手势PanGesture,设置组合手势识别模式为并行识别模式:Parallel,并行识别组合手势中注册的手势将同时进行识别,直到所有手势识别结束,并行识别手势组合中的手势进行识别时互不影响。
2、在对图片进行双指捏合时,优先触发绑定的PinchGesture手势,对图片进行缩放操作;当滑动拖拽图片时,识别绑定的PanGesture手势,对图片进行拖拽移动。
核心代码
1、绑定组合手势GestureGroup,设置为并行识别模式,添加捏合手势PinchGesture和滑动手势PanGesture。
2、在捏合手势的onActionUpdate和onActionEnd回调中修改scale参数,进行图片缩放处理。
场景二:图片在放大的情况下也可切换到后一张图或者前一张图
方案
1、在panGesture手势的onActionUpdate回调中获取偏移位置,计算图片放大后分别往左或者往右拖动时是否到达边界,记录向左或向右边界的状态。
2、在onTouch事件中识别手指滑动方向,并判断边界是翻页还是拖动,方向为左右且到达边界,执行scaleUnEnable方法,将panGesture手势方向置为none,执行翻页;反之执行滑动手势,不翻页。
核心代码
1、在PanGesture手势的onActionUpDate回调中获取偏移位置,计算拖拽过程中左右两边分别是否已到边界。
2、通过绑定onTouch事件,在滑动的过程中根据手指方向和是否到达边界通过isPageChangeOnBoundary方法判断后分别执行scaleEnable和scaleUnEnable方法进行翻页或者拖动处理。
3、在isPageChangeOnBoundary 方法中根据传入的手指滑动方向和拖动到达的边界方向来判断返回,之后再分别调用不同场景下的方法处理逻辑,进行翻页或者拖动。
