问题标签 [ontouch]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 了解 Android PointerID。返回意外值
我最近收到了我的应用程序的崩溃报告,在查看堆栈跟踪后,我意识到我的多点触控控件有问题。
发生的事情是这样的:
我正在尝试仅记录 4 个手指的手指按压。不再。我希望任何超过 4 的东西都被有效地“忽略”。
因此,我正在做这样的事情:
因此,如果超过 4 个手指按下,我不会在 onTouch 中运行任何东西。
这似乎工作正常,它通常不会在手指 5、6 等上“起作用”。所以一切都很好。(我说“一般”是因为接下来的内容).....
问题
但是,如果我说 6 根手指向下,然后将它们抬起,最后一根手指向下的指针 ID 为 5。这并不是真正的问题,因为我在action_up或action_pointer_up中没有做任何事情。
然而,在action_pointer_down中,90% 的时间我会得到预期的行为,即任何手指放下的 ID 都在 0 到 3 之间。
但是,如果您将 5 个或更多手指放在屏幕上并一遍又一遍地快速点击屏幕,最终会为action_pointer_down事件分配一个 ID为 4 或更多(我见过 4、5、6 和 7)因此,当它尝试将这些值放入 xList 和 yList 数组时,它会因超出范围异常而崩溃。
这是一个问题,因为在 action_pointer_down 中,我将手指的 x 和 y 保存到我创建的几个数组中。(稍后我需要此信息来执行某些操作)这些数组的大小为 4(因此索引为 0 到 3)。像这样:
为什么是这样?这是多点触控 API 中的错误还是我不理解的问题。在正常使用中,该错误通常不会发生,但我可以自己轻松触发它并由用户发现,因此不胜感激。我希望任何手指按下事件都只会收到 0-3 的 ID。除非我误解了什么。
android - 在屏幕上移动手指时的阅读视图
请帮忙,是否可以做下一件事 - 用手指在屏幕上而不抬起最后一个,程序读取我花费的视图对象。
尝试使用 onTouchListener,但总是将视图传递到 onTouch 方法中,该视图是感人的。
android - 在 onTouch 方法中更改 ListView 中 CustomView 的大小(setLayoutParams 不起作用)
我有一个由自定义 BaseAdapter 填充的 ListView。我的自定义 BaseAdapter 中的 getView 方法只返回一个扩展 RelativeLayout 的自定义视图。
现在我希望每当我触摸 ListView 项目时,该项目的高度设置为 TouchEvent 的 Y 位置(或其他东西,但那不是问题)。
所以我在我的自定义视图中设置了一个 OnTouchListener:
所以一切都很好。在我的日志中,我看到大量的数字正在减少。但是一旦我想调用 setLayoutParams 方法(这是必要的),似乎 onTouch 方法只会在我释放并重新触摸屏幕时被调用一次,因为我现在只得到一个数字我的日志和我的自定义视图也只调整了一次。
任何想法是什么原因?
android - 带有两个 onTouchListener 的两个视图...不起作用
我有一个有两个不同视图的应用程序,每个视图都有自己的 onTouchListener 并且每个 ontouchlistener 做不同的事情。如果我单独触摸这两个视图监听器,它们就会起作用。问题是,如果按下一个视图并捕获触摸事件,则无法预置另一个视图,它们在多点触控中不起作用!我希望两个视图的两个 ontouchlistener 同时工作。如何做到这一点?
这是视图 A 的代码:
这是视图 B 的代码:
android - 当用户在视图上移动手指时,我们如何获取在 Android 中的 onTouchListener 中触摸的视图的 id?
我无法获得手指移动的第二个视图 ID。我试图在触摸监听器中打印指针使用以下内容的 id。
这里的事件是我的 MotionEvent,v 是视图。我能够获得触摸的 X 和 Y 位置,但我想知道哪个视图被越过。我只得到一直被按下的第一个视图的视图 ID。
我检查了以下链接以获得一些帮助,但无法获得任何相关详细信息。
有人可以帮我吗?
android - 获取最近剩余手指的坐标 - Android Multitouch
我面临的问题是,在触发 ACTION_POINTER_UP 时,我需要获取最近剩余手指的坐标。
举个例子(使用 2 个指针):
- 将拇指放在屏幕上 (ID0)
- 将食指放在屏幕上 (ID1)
- 从屏幕上抬起拇指 (ID0)
- 剩余的指针是食指 (ID1)
- 获取食指坐标(ID1)
现在,在我的 ACTION_POINTER_UP 案例中,我有以下内容:
显然,这并没有多大用处,因为(据我所知),它记录了离开屏幕的指针的 x 和 y,这不是我需要的。
上面的例子只使用了 2 个指针,但同样的问题可以应用于 3、4 或 5 个指针。
- 将拇指放在屏幕上 (ID0)
- 将食指放在屏幕上 (ID1)
- 将中指放在屏幕上 (ID2)
- 将无名指放在屏幕上 (ID3)
- 从屏幕上抬起拇指 (ID0)
- 抓取最近触摸屏幕的剩余指针的 x 和 y
请不要链接到任何官方的 Android 文档或博客,我已经多次阅读它们,但我仍然不明白如何实现这一点。另外,如果我对指针 ID 的理解不正确,请纠正我。
android - Android - 从自定义视图中的 onTouch 方法向 mainActivity 发送信息
我有一个自定义视图(DrawFigures),它有一个 onTouch 方法来执行一系列操作。有一个布局,有几个按钮,一个 TextView 和一个 RelativeView 来动态添加自定义视图。然后,在 MainActivity.class 中,当在这个自定义视图中调用 onTouch 方法时,我需要接收 DrawFigures 中某些属性的值,以便在 TextView 组件中显示它们。
这是自定义视图的代码:
由于 DrawFigures 的 onTouch 方法,我无法接收 value1 以在 MainActivity 的 TextView 中显示它。这个问题怎么可能解决?在 MianActivity 中实现 OnTouch 方法?怎么做?MainActivity.class 如下所示:
android - Android:如何制作按键声音
我正在使用 ontouch 侦听器来捕捉按键向上和按键向下事件。用于重复功能。我还想在按下按钮时发出咔哒声。我尝试添加一个 onClick 方法并将可点击设置为 true,但 ontouchlistener 似乎覆盖了 onclicklistener。
如何发出按键声音并遵循用户的点击偏好?
更新:谢谢大家。我通过 Android 源代码找到了我的答案。在 PhoneWindow.java 中,我找到了他们正在做我需要的地方的地方。本质上,您打开音频管理器并播放 AudioManager.FX_KEY_CLICK。AudioManager.playSoundEffect 仅在适当时播放音效。
android - Android 中的 onTouch 和 onTouchEvent 方法
我用'onTouch'方法写了如下。
但是 'getPointerCount()' 和 'getAction()' 总是吐出相同的值。
此代码无法识别多点触控。
当 MotionEvent.ACTION_UP 发生时,不会调用 'onTouch' 方法。
所以,我用 onTouchEvent 方法尝试了同样的事情,这很有效。
“onTouch”方法有什么问题?
ios - OnTouchUp 和 OnTouchDown 上的 Swift UIButton 背景变化?
我正在使用 swift,在我的应用程序中有一个 UIButton,我想在按下和按下键时更改背景颜色和边框颜色。