我正在尝试创建在所有其他站点下方的视图,这些站点将在 3 个手指被触摸时执行操作。这些活动都有自己的触摸和滑动。
我通过创建一个扩展线性布局和拦截触摸的类来完成这项工作。并将其添加到 xml 中。
但这仅在按钮或视图之类的项目是可点击或可触摸的表面并且本身并未成为可触摸的表面时才被调用。
在
public class MyCatcher extends LinearLayout {
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
int action = event.getAction();
switch (action & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_POINTER_DOWN:
// multitouch!! - touch down
int count = event.getPointerCount(); // Number of 'fingers' in this
if (count > 3) {
doThis(mContext);
}
}
return super.onInterceptTouchEvent(event);
}
在xml中
<packagename.MyCatcher
....>
my normal layout
</packagename.MyCatcher>
所以当一个可触摸的项目被触摸但没有成为它自己的触摸层时,这段代码就起作用了。
我在构造函数中尝试了 setontouchlister,但没有成功。
谢谢你的帮助
额外:当通过 onAttach 设置触摸监听器时,我可以让它捕捉触摸,但我不能像往常一样使用 event.getPointerCount(),因为它返回 1。我担心这可能会占用大量处理?/