Android multitouch View.OnTouchListener
我试着在Android上玩一些多点触控 我在屏幕上有两个RelativeLayout,我想在那里获得触摸事件Android multitouch View.OnTouchListener,android,multi-touch,Android,Multi Touch,我试着在Android上玩一些多点触控 我在屏幕上有两个RelativeLayout,我想在那里获得触摸事件 fooLayout = (RelativeLayout)findViewById(R.id.foo); fooLayout.setOnTouchListener(onTouchListener); barLayout = (RelativeLayout)findViewById(R.id.bar); barLayout.setOnTouchListener(onTouchListene
fooLayout = (RelativeLayout)findViewById(R.id.foo);
fooLayout.setOnTouchListener(onTouchListener);
barLayout = (RelativeLayout)findViewById(R.id.bar);
barLayout.setOnTouchListener(onTouchListener);
...
View.OnTouchListener onTouchListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
...
我试着为每个布局设置一个OnTouchListener,但似乎根本不起作用
我想既然onTouch方法获得了一个视图,我就可以通过视图识别当前的触摸事件,并保存指针id
int pointerId = event.getPointerId(event.getActionIndex());
int action = event.getActionMasked();
switch (action) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_POINTER_DOWN:
switch (v.getId()) {
case R.id.foo:
fooPointerId = pointerId;
break;
case R.id.bar:
barPointerId = pointerId;
break;
}
这并不像我想的那样有效。
当我的第一个手指接触其中一个布局时,我将从该布局中获得正确的id。但是当我在另一个布局中放下第二个手指时,它会得到我放下第一个手指的布局的id
我走错方向了吗
这是可能的,还是我必须将OnTouchListener放在顶视图上,并通过事件的x/y值计算出我所接触的布局?我认为您应该扩展相对布局,并在那里实现onTouchEventMotionEvent ev,以计算出哪些指针正在接触主视图中的哪个子视图SPUT foo和bar实现onTouchEvent的相对布局/视图组
在TouchView v中,MotionEvent ev一次只允许注册一个指针,因此可能无法使用这种方法。这可能会有所帮助我做了一个快速测试,在覆盖onTouchEvent时生成了两个自定义视图。如果我触摸并按住一个视图,然后触摸另一个视图,则事件将不会发送。到目前为止,我看到的所有例子,包括链接,似乎都是一个视图中的多点触控。是否没有办法使其适用于多个视图?请尝试扩展一个视图组(如相对布局),然后在XML中将其作为根视图,并在其中添加视图。在根目录上实现onTouchEvent。我认为这样所有子视图都将暴露于多个指针。因此,我必须使用根中事件的x/y值来确定触摸位于哪个视图中?是的,您甚至可以通过指针ID知道哪个指针位于哪个视图上OK,这就是我害怕的。我希望能从中找到答案。谢谢你的帮助。