我的应用程序正在制作一个在 RecyclerView 上使用 TouchImageView 的画廊。
我试图使用此类在附有 PageSnapHelper 的 RecyclerView 中显示多个全屏图像
这个效果很好,但是缩放使用起来非常尴尬。如果我尝试捏缩放,图像会左右移动但不会缩放。仅双击有效。
我认为与 PageSnapHelper 附加的 RecyclerView 的滑动和滚动存在冲突。
当通过滑动进行捏合缩放时也可以在滑动时起作用,如何使 TouchImageView 触摸事件覆盖 PageSnapHelper 事件?
简单来说,我想要聊天应用程序(Whatsapp 和 telegram)图像滑块的相同行为,支持滑动和捏缩放
注意,我搜索了 stackoverflow 但只有 ViewPagers 的解决方案,但没有 recyclerview
我不太确定你在这里问什么,但如果我答对了,问题是你不能捏缩放,因为 RecyclerView 将你的捏操作识别为滑动。 如果您愿意,您始终可以通过调用以下方法来禁止 RecyclerView 拦截触摸事件(并自己处理该事件):
view.parent.requestDisallowInterceptTouchEvent(true)
PrivateOnTouchListener 的 onTouch 方法内部。
如果您想要更简单的解决方案,您还可以检查当前视图是否已缩放或者是否至少有 2 个手指正在触摸视图。如果是,则禁止父级拦截触摸事件。 PrivateOnTouchListener 代码内部将如下所示:
if (isZoomed || event.pointerCount >= 2) {
v.parent.requestDisallowInterceptTouchEvent(true)
}
现在,仅当视图未缩放并且只有一根手指触摸视图时,才允许父级拦截触摸事件。
您可以使用尝试这个库 Subsampling-scale-imageview https://github.com/davemorrissey/subsampling-scale-image-view/tree/master