TouchImageView源码分析

TouchImageView源码分析——请叫我代码侦探


github上有个不错得项目,https://github.com/Dreddik/AndroidTouchGallery


主要还是TouchImageView里面得源码分析,分析touch事件得传递流程


当点击这个GalleryViewPager里得TouchImageView的时候,打印出的结果为


down ==0,move==2,up ==1,cancle==3;

从打印分析可以看出,GalleryViewPager的onInerceptTouch拦截了down事件,但是执行了super的onInterceptTouch方法返回默认值false,然后就直接传递给了TouchImageView去执行down事件,在这里ViewPager和其它的ViewGroup的touch事件传递不同,因为这里的子View其实也是一个ViewGroup,也就是说,当ViewPager拦截的touch事件传递给这个Viewgroup子view的onTouchEvent事件后,即使子view的on touch事件返回的是false,也不会把touch事件传递给GalleryViewPager的ontouchevent处理。这点和一般的view group的touch事件的传递不太一样,具体我也不明白为什么。它就好像是ViewPager的直接子View的OnTouchEvent事件返回的是true一样。如下:



ViewPager里面设置的AdapterView为单个View非ViewGroup时候,touch事件传递,down后直接返回给ViewPager的TouchEvent处理,子view默认返回false;



但是当子View的onTouch事件返回的是true的话,不会直接将接下来的move的touch事件传递给ViewPager的onTouchEvent事件。而是自己消耗move事件。



ViewPager里面的onTouchEvent执行的时机是当子ViewGroup的子view,或者直接子view(这个子view的ontouchevent事件返回的是true)的touch事件为Action_cancle时才执行。


而如果是单独的一个ontouchevent事件返回的是false的非ViewGroup的子view则执行到down后就直接执行ViewPager里的onTouchEvent方法。


具体原因可以去看android系统源码

PS:可能这里分析会有很多问题,希望各位看到问题错误多批评指正,欢迎吐槽。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在 Android 上,有几个常用的图片涂鸦控件可用于实现手写和涂鸦功能。以下是其中一些控件: 1. PhotoView: PhotoView 是一个强大的图片查看控件,它支持缩放、平移和手势操作。你可以通过 PhotoView 的 `setOnPhotoTapListener` 方法来监听用户的触摸事件,并在图片上绘制手写和涂鸦。你可以使用 Canvas 和 Paint 类来实现绘制操作。 2. TouchImageViewTouchImageView 是一个基于 ImageView 的自定义控件,它扩展了 ImageView 的功能,并增加了手势操作和触摸事件的处理。你可以在 TouchImageView 上实现手写和涂鸦功能,类似于在 PhotoView 上的操作。 3. SignaturePad: SignaturePad 是一个专门用于捕获用户签名的控件,但也可以用于涂鸦功能。它提供了绘制路径并记录用户手势的功能。你可以在 SignaturePad 上实现手写和涂鸦,然后将其导出为图像。 4. DrawingView: DrawingView 是一个自定义的 View,它提供了绘制和涂鸦的功能。你可以使用 DrawingView 来监听触摸事件并绘制路径。它可以方便地与其他 UI 元素集成,并支持不同的画笔样式和颜色。 以上这些控件都是开源的,并且有很好的文档和示例代码可供参考。你可以根据你的具体需求选择其中一个控件,并根据其文档和示例代码来实现图片涂鸦功能。 希望这些信息对你有所帮助!如果你有任何其他问题,请随时提问。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值