在附带PageSnapHelper的RecyclerView中使用TouchImageView?

问题描述 投票:0回答:2

我的应用程序正在制作一个在 RecyclerView 上使用 TouchImageView 的画廊。

我试图使用此类在附有 PageSnapHelper 的 RecyclerView 中显示多个全屏图像

这个效果很好,但是缩放使用起来非常尴尬。如果我尝试捏缩放,图像会左右移动但不会缩放。仅双击有效。

我认为与 PageSnapHelper 附加的 RecyclerView 的滑动和滚动存在冲突。

当通过滑动进行捏合缩放时也可以在滑动时起作用,如何使 TouchImageView 触摸事件覆盖 PageSnapHelper 事件?

简单来说,我想要聊天应用程序(Whatsapp 和 telegram)图像滑块的相同行为,支持滑动和捏缩放

注意,我搜索了 stackoverflow 但只有 ViewPagers 的解决方案,但没有 recyclerview

android-recyclerview android-viewpager swipe swipe-gesture touchimageview
2个回答
0
投票

我不太确定你在这里问什么,但如果我答对了,问题是你不能捏缩放,因为 RecyclerView 将你的捏操作识别为滑动。 如果您愿意,您始终可以通过调用以下方法来禁止 RecyclerView 拦截触摸事件(并自己处理该事件):

view.parent.requestDisallowInterceptTouchEvent(true)

PrivateOnTouchListener 的 onTouch 方法内部。

如果您想要更简单的解决方案,您还可以检查当前视图是否已缩放或者是否至少有 2 个手指正在触摸视图。如果是,则禁止父级拦截触摸事件。 PrivateOnTouchListener 代码内部将如下所示:

     if (isZoomed || event.pointerCount >= 2) {
        v.parent.requestDisallowInterceptTouchEvent(true)
     }

现在,仅当视图未缩放并且只有一根手指触摸视图时,才允许父级拦截触摸事件。


0
投票

您可以使用尝试这个库 Subsampling-scale-imageview https://github.com/davemorrissey/subsampling-scale-image-view/tree/master

© www.soinside.com 2019 - 2024. All rights reserved.