在Android中协调同一视图上的滚动、投掷、轻触、缩放和平移
我正在开发一个可以读取pdf文档的应用程序,并尝试在pdf页面上实现缩放和平移 该页面作为位图加载并显示在ImageView中。还实现了一些其他功能,例如使用可滚动的底部自定义导航栏导航文档中的页面 此外,当用户点击页面时,底部栏会出现,下一次点击时,底部栏会消失,当用户投掷时,用户应该能够导航到文档中的下一页/上一页 所有功能(如滚动、点击和投掷)都是通过在reader活动中实现在Android中协调同一视图上的滚动、投掷、轻触、缩放和平移,android,gesture-recognition,Android,Gesture Recognition,我正在开发一个可以读取pdf文档的应用程序,并尝试在pdf页面上实现缩放和平移 该页面作为位图加载并显示在ImageView中。还实现了一些其他功能,例如使用可滚动的底部自定义导航栏导航文档中的页面 此外,当用户点击页面时,底部栏会出现,下一次点击时,底部栏会消失,当用户投掷时,用户应该能够导航到文档中的下一页/上一页 所有功能(如滚动、点击和投掷)都是通过在reader活动中实现OnTestureListener来处理的,我正在尝试使用OnTouchListener实现进行缩放和平移,该实现是
OnTestureListener
来处理的,我正在尝试使用OnTouchListener
实现进行缩放和平移,该实现是在包含页面的ImageView
上设置的
代码似乎正常工作,但似乎其他一些事件,特别是滚动,正在干扰它,这使它变慢
我的问题是,是否有更好的方法来协调一切,因为onTestureListener
用于GestureDetector处理onFling
、onTapUp
和onScroll
,但我找不到一个好方法来在它支持的方法之一中添加缩放/平移代码
因此,如果有人有处理所有这些事件的经验,或者对此有一些好的建议/教程,我将不胜感激。我不确定您所说的“一些其他事件,例如卷轴使其变慢”是什么意思,您能详细说明吗 您应该能够使用
onTouch
非常简单地执行缩放和平移,如果您选择使用Canvas
,则不会出现滚动问题。完整的实现代码可以在上找到,用于滚动和缩放
通常情况下,仅在ImageView上应用高级交互功能并不常见,但这并不意味着人们还没有这样做(请参阅缩放示例,包括支持多点触摸或缩放)
无论您采用哪种方式,您都可能希望在
onTouch
函数中使用gesturedector
。您应该能够将我链接到的教程的各个部分剪切和拼接在一起,以获得完整的手势支持+缩放/平移。但是,如果我这样做的话,我可能只会使用onTouch
和Canvas
(因为Canvas
将提供更好的性能)并使用核心MotionEvents
,例如向下上移
,以获得更好的控制,或者如果我感到懒惰,使用GestureDetector
进行投掷等更为棘手的操作。也许你应该尝试使用画布对象而不是ImageView?事实上,需要做一些事情,这是一种更好地组织事件和组件的方法,但我对这方面比较陌生,希望听到一些建议。谢谢你的画布建议。谢谢你的建议,我会看一看你提到的教程,看看我能不能把一些东西放在一起。同时,我所做的是使用GestureDetector和ScaleGestureDetector使代码正常工作。目前,滚动似乎不会干扰缩放,但是可能需要添加一些代码以使平移正常工作。