Articles of touch

无论如何从视图对象中删除onTouchListener?

我有一个webview的触摸式监听器,但它对webview的function有不良影响,所以我想知道在最初的交互之后是否还有移除触摸监听器?

在视图的Ontouch方法中单击触摸检测

我在自定义视图的ontouch方法中需要单点触摸检测。 我尝试在ACTION-DOWN和ACTION-UP中获取x和y值,在ACTION-UP中我给出了一个条件,即如果ACTIONDOWN和ACTION-UP中的X和Y的值相等,则将其作为单击。 我的代码如下 @Override public boolean onTouchEvent(MotionEvent ev) { if (!mSupportsZoom && !mSupportsPan) return false; mScaleDetector.onTouchEvent(ev); final int action = ev.getAction(); switch (action & MotionEvent.ACTION_MASK) { case MotionEvent.ACTION_DOWN: { final float x = ev.getX(); final float y = ev.getY(); mLastTouchX = x; //here i get x and y values in action down mLastTouchY = y; […]

为什么触摸事件会破坏我的Android帧速率?

我正在为Android开发游戏。 它有很多事情发生,但运行得相当顺利。 当然,直到用户触摸屏幕。 当他们触摸它时, onTouchEvent被调用(使用action = ACTION_MOVE , x = 0和y = 0 )大约每10毫秒调用一次似乎相当高的优先级,因为它绝对会消除帧速率。 一旦触摸结束,帧速率就会恢复到良好状态。 我试过了 像往常一样让onTouchEvent处理游戏输入 让onTouchEvent返回true 没有实现onTouchEvent 这三种情况都存在问题。 有没有人遇到过这个? 有没有办法降低生成ACTION_MOVE事件的速率,或者确保它们仅在实际移动时生成,或者使用仅获取触摸当前位置的轮询方法? 或者甚至只是一种完全禁用它的方法?

RecyclerView + CardView +触摸反馈

当有人在RecyclerView内部时,有没有人解决了没有触摸反馈的CardView之谜? 我有一个带有一堆CardViews(一个CardList )的RecyclerView 。 当我点击任何CardView时,我开始另一个活动。 这工作得很好,但是当我点击CardView时,我看不到任何触摸反馈。 及时,我已经使用以下方法配置了我的CardView(XML): android:clickable=”true” android:background=”?android:selectableItemBackground” 谢谢!

在Android上禁用标注(上下文菜单)

在Web应用程序中,我需要禁用移动浏览器在触摸目标(例如或链接)上触摸并按住(“长按”)时显示的默认标注。 我已经在使用-webkit-touch-callout: none; 这在iPhone和iPad上运行良好,但似乎不适用于Android(在Android 4.4上测试过)。 来自W3邮件列表的这篇文章建议在Javascript中为“contextmenu”事件添加一个监听器并调用e.preventDefault() 。 这似乎也不起作用。 有什么建议么?

Chrome for Android的不正确的clientX和clientY行为的解决方法是什么?

在Chrome for Android版本16和18(至少)中,存在错误报告clientX和clientY错误。 如果页面滚动,则至少touchstart事件的clientX/Y值将不正确,但不是click事件。 这里有一个错误: https://code.google.com/p/chromium/issues/detail?id=117754 其中包含此示例,您可以自己尝试: http : //www.apprisant.com/tab/cd.html 我在这里用canvas做了一个类似的例子: http : //codepen.io/simonsarris/full/dJcvn 这些示例适用于其他移动浏览器(包括普通的旧版Android浏览器),但Chrome for Android似乎在滚动时打破了clientX / Y(至少某些)触摸事件。 有趣的是,clientX和clientY在click事件上没有被破坏,就像它们在touchstart上touchstart 。 我的问题是,让clientX和clientY在浏览器中一致地工作的最佳解决方法是什么? 看来用window.scrollX和window.scrollY偏移会“解决”这个问题,但是一个好的解决方法需要: 确定浏览器是否受到影响,最好不要让用户做任何事情,也不要求助于检查userAgent(因此不要对特定的浏览器版本做任何假设)。 换句话说, 我们如何判断哪些浏览器的clientX和clientY值clientX clientY ? 可靠地解决问题并且仅在那些需要解决的浏览器上解决(可能只有Chrome for Android及其特定版本,因为未来的版本可能会很好),看起来,偏向window.scrollX/Y是唯一需要的东西要在这里完成。

触摸设备上的jQuery拖放(iPad,Android)

我们有一个卡片游戏网站,它广泛使用jQuery Draggable和Droppable,它使用了近一年(当使用鼠标时)几乎完美无缺。 我们真的很想让网站在触摸屏设备上工作,但我们似乎无法获得jQuery的拖拽,尤其是降低function以便可靠地工作。 拖动工作“ok”,除非被拖动的div位于具有任何偏移,边距,填充等的另一个dom元素内。如果是,则拖动的元素也从用户的手指偏移相似的量。 可能听起来不是什么大不了的事,但它使界面变得不可用。 掉线似乎不起作用。 我们已经研究过这里提出的各种选项(如果可以的话,会尝试更新这篇文章的链接,但是没有一个适用于我们)。 我们也研究过jQuery Mobile,但它仍处于alpha状态,甚至更像是一个框架,使网站模拟手机的UI与我们正在寻找的。 关于这个主题的大多数SO和谷歌post似乎都在2010年末落后,这让我觉得有一个明显的答案,也许我们只是错过了。 顺便说一句,我们正在寻找的function在技术上显而易见,因为用于拖放的YUI库按预期工作。 不幸的是,我们不能仅仅重构网站以从jQuery切换到YUI。 那里有人有什么想法吗? 我们会选择只支持iPad的答案,但它确实不需要我们重构现有网站。 谢谢!

在Android中,MotionEvent中的getAction()和getActionMasked()有什么区别?

我对Android中的两种方法感到困惑。 似乎这两种方法都告诉你它是什么types的事件,即它是一个向下或向上的事件。 我什么时候用哪个? public void onTouchEvent(MotionEvent e) 请不要引用文档,因为我读过它,并且我没有看到任何参数可以提供给任何一种方法来获得不同的东西。 public final int getAction () 和 public final int getActionMasked()

Android注入触摸事件

我知道这是一个有点重复的问题。 我已经回顾了关于SO和其他几个网站的各种问题,但找不到满足我需要的单一答案。 需求 1)我有X,Y坐标,我想创buildMotionEvent并将其分派到最顶层的活动/视图。 2)我必须注入它在我自己的应用程序。 所以Inject_Events权限不应该是必需的 。 3)虽然我有坐标,但我不知道活动或视图是在那个位置。 所以Activity.dispatchTouchEvent不适合我。 。 (view.dispatchTouchEvent将工作,但我不知道该视图)。 4) 仪表也没有帮助,因为他们没有单一的方法在x,y位置注入触摸事件。 5)InputManager有隐藏方法injectInputEvent,但我不知道如何访问injectInputEvent并编译它? 任何帮助感激!

Android onTouchEvent坐标跳过

我的应用程序,我有一个要求用户在屏幕上移动它的元素,并执行此操作我使用RelativeLayout和onTouchListener。 我遇到的问题是在我的onTouchListener里面, getX()和getY()得到了一些奇怪的结果。 我将下面这行代码添加到我的onTouch() – > ACTION_MOVE块中: Log.v("example", "Touch: {x:" + event.getX() + " } {y:" + event.getY() + "}"); 以下是我的LogCat结果。 04-29 03:16:11.000:V / myApp(24188):触摸! 04-29 03:16:11.057:V / myApp(24188):Touch:{x:69.78699} {y:107.774216} 04-29 03:16:11.103:V / myApp(24188):Touch:{x:77.86926} {y:173.37648} 04-29 03:16:11.158:V / myApp(24188):Touch:{x:69.78699} {y:108.781845} 04-29 03:16:11.205:V / myApp(24188):Touch:{x:77.86926} {y:174.38597} 04-29 03:16:11.463:V / myApp(24188):Touch:{x:69.78699} {y:109.64778} 04-29 03:16:11.502:V / myApp(24188):Touch:{x:77.86926} {y:175.62172} […]