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"

源码地址

点我查看

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。