Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android中协调同一视图上的滚动、投掷、轻触、缩放和平移_Android_Gesture Recognition - Fatal编程技术网

在Android中协调同一视图上的滚动、投掷、轻触、缩放和平移

在Android中协调同一视图上的滚动、投掷、轻触、缩放和平移,android,gesture-recognition,Android,Gesture Recognition,我正在开发一个可以读取pdf文档的应用程序,并尝试在pdf页面上实现缩放和平移 该页面作为位图加载并显示在ImageView中。还实现了一些其他功能,例如使用可滚动的底部自定义导航栏导航文档中的页面 此外,当用户点击页面时,底部栏会出现,下一次点击时,底部栏会消失,当用户投掷时,用户应该能够导航到文档中的下一页/上一页 所有功能(如滚动、点击和投掷)都是通过在reader活动中实现OnTestureListener来处理的,我正在尝试使用OnTouchListener实现进行缩放和平移,该实现是

我正在开发一个可以读取pdf文档的应用程序,并尝试在pdf页面上实现缩放和平移

该页面作为位图加载并显示在ImageView中。还实现了一些其他功能,例如使用可滚动的底部自定义导航栏导航文档中的页面

此外,当用户点击页面时,底部栏会出现,下一次点击时,底部栏会消失,当用户投掷时,用户应该能够导航到文档中的下一页/上一页

所有功能(如滚动、点击和投掷)都是通过在reader活动中实现
OnTestureListener
来处理的,我正在尝试使用
OnTouchListener
实现进行缩放和平移,该实现是在包含页面的
ImageView
上设置的

代码似乎正常工作,但似乎其他一些事件,特别是滚动,正在干扰它,这使它变慢

我的问题是,是否有更好的方法来协调一切,因为
onTestureListener
用于GestureDetector处理
onFling
onTapUp
onScroll
,但我找不到一个好方法来在它支持的方法之一中添加缩放/平移代码


因此,如果有人有处理所有这些事件的经验,或者对此有一些好的建议/教程,我将不胜感激。

我不确定您所说的“一些其他事件,例如卷轴使其变慢”是什么意思,您能详细说明吗

您应该能够使用
onTouch
非常简单地执行缩放和平移,如果您选择使用
Canvas
,则不会出现滚动问题。完整的实现代码可以在上找到,用于滚动和缩放

通常情况下,仅在ImageView上应用高级交互功能并不常见,但这并不意味着人们还没有这样做(请参阅缩放示例,包括支持多点触摸或缩放)


无论您采用哪种方式,您都可能希望在
onTouch
函数中使用
gesturedector
。您应该能够将我链接到的教程的各个部分剪切和拼接在一起,以获得完整的手势支持+缩放/平移。但是,如果我这样做的话,我可能只会使用
onTouch
Canvas
(因为
Canvas
将提供更好的性能)并使用核心
MotionEvents
,例如
向下上移
,以获得更好的控制,或者如果我感到懒惰,使用
GestureDetector
进行投掷等更为棘手的操作。

也许你应该尝试使用画布对象而不是ImageView?事实上,需要做一些事情,这是一种更好地组织事件和组件的方法,但我对这方面比较陌生,希望听到一些建议。谢谢你的画布建议。谢谢你的建议,我会看一看你提到的教程,看看我能不能把一些东西放在一起。同时,我所做的是使用GestureDetector和ScaleGestureDetector使代码正常工作。目前,滚动似乎不会干扰缩放,但是可能需要添加一些代码以使平移正常工作。