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"

源码地址

点我查看

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值