Android可缩放的ImageView

前言

之前做了一个看图的软件,自定义了一个ImageView,在里面处理了很多滑动的逻辑,最终可以双击放大或缩小,放大之后可以进行拖动。我给这个控件取名叫做ScalableImageView,可以嵌套在ViewPager里面,简单改造一下ViewPager就可以进行使用了。

项目演示

实现

在这里说一下思路好了,源码写了很多注释,如果大家有需要可以直接去github下载源码进行阅读。

  1. 实现三个接口:

    View.OnTouchListener
    GestureDetector.OnGestureListener
    GestureDetector.OnDoubleTapListener

    有各种手势的回调,比如 onScroll,onFling,onDoubleTap方法

  2. 获取原始图片的宽高,首先将图片放大到与手机一样宽

  3. 双击的时候,将图片放大,然后再onScroll里面进行平移

  4. 平移之后,如果手指飞速拖动的话,会回调onFling方法,在里面进行属性动画的设置,让图片继续滑动一段距离。

  5. 处理ViewPager与ScalableImageView的事件冲突:
    如果图片没有被放大,那么不需做多余的处理。
    如果图片被放大了,且用户想将图片滑出去,那么让ViewPager拦截事件。如果用户只是普通的拖动图片,那依然不要拦截事件,分发给ScalabaleImageView即可。

  6. 在使用的时候,要将scaleType设置为matrix,即android:scaleType="matrix"

源码地址

点我查看

扫描二维码关注公众号,回复: 1036936 查看本文章

猜你喜欢

转载自blog.csdn.net/q1242027878/article/details/79512914
今日推荐