android上的多点触控可提供不同的视图

android上的多点触控可提供不同的视图,android,multi-touch,ontouchlistener,Android,Multi Touch,Ontouchlistener,如果我的视图中有两个按钮,我想同时为这两个按钮启用OntouchListener,我的意思是触摸第一个按钮启动一个任务,按住第一个按钮触摸第二个按钮启动另一个任务。如何操作?等待帮助。您可以在该视图中添加一个onTouchListener,它将处理多点触摸 @Override public boolean onTouch(View v, MotionEvent event) { switch(event.getAction() & MotionEvent.ACTION_MA

如果我的视图中有两个按钮,我想同时为这两个按钮启用OntouchListener,我的意思是触摸第一个按钮启动一个任务,按住第一个按钮触摸第二个按钮启动另一个任务。如何操作?等待帮助。

您可以在该视图中添加一个onTouchListener,它将处理多点触摸

   @Override
public boolean onTouch(View v, MotionEvent event) {
    switch(event.getAction() & MotionEvent.ACTION_MASK) {

    case MotionEvent.ACTION_DOWN:
        //first finger went down
        break;

    case MotionEvent.ACTION_MOVE:
        //a touch placement has changed
        break;

    case MotionEvent.ACTION_UP:
        //first finger went up
        break;

    case MotionEvent.ACTION_CANCEL:
        //gesture aborted (I think this means the finger was dragged outside of the touchscreen)
        break;

    case MotionEvent.ACTION_POINTER_DOWN:
        //second finger (or third, or more) went down.
        break;

    case MotionEvent.ACTION_POINTER_UP:
        //second finger (or more) went up.
        break;

        default: break;
    }
    return true;
}

检查您的按钮是否在各自的外壳内被单击。

您可以在两个按钮上添加两个单独的
OnTouchListener
s,并在
活动中用两个布尔值指示按钮的触摸状态,或者,您可以将一个
ontouch Listener
添加到您的父视图
中,并将
MotionEvent
中指针的触摸坐标与两个按钮的坐标进行比较。

因此,我不确定您想要完成什么,但您有如下功能:

private boolean mFirstButtonDown = false;

@Override
public boolean onTouchEvent(MotionEvent event){
    // first button onTouchEvent
    switch (event.getAction()){
       case MotionEvent.ACTION_DOWN:
                            mFirstButtonDown = true;
            break;
       case MotionEvent.ACTION_UP:
                            mFirstButtonDown = false;
            break;
    }
   ....
}
对于第二个按钮,只需检查其是否仍保持不变:

 @Override
 public boolean onTouchEvent(MotionEvent event){
   switch (event.getAction()){
       case MotionEvent.ACTION_DOWN:
         if (mFirstButtonDown && (event.getPointerCount() > 1)) {
             // do task
     }
 }
要同时触摸两个按钮,请使用多个指针(或多点触摸),您可以在本文中找到更多详细信息:

另一篇可以帮助您理解多指针的好文章是关于Android开发者的:


上面的代码没有经过测试,它应该给你一个想法:)

试试下面的代码片段

@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction() & MotionEvent.ACTION_MASK) {

case MotionEvent.ACTION_DOWN:
    //first finger went down
    break;

case MotionEvent.ACTION_MOVE:
    //a touch placement has changed
    break;

case MotionEvent.ACTION_UP:
    //first finger went up
    break;

case MotionEvent.ACTION_CANCEL:
    //gesture aborted (I think this means the finger was dragged outside of the touchscreen)
    break;

case MotionEvent.ACTION_POINTER_DOWN:
  if(mFirstButton.isPressed() && mSecondButton.isPressed())
   {// your code.}
    break;
这很简单 @凌驾 公共布尔onTouch(视图v,运动事件arg1) { 开关(v.getId()){ 案例R.id.button1:
if(arg1.getAction()==MotionEvent.ACTION\u向下) { //你的活动 } 打破 案例R.id.按钮2: if(arg1.getAction()==MotionEvent.ACTION\u向下) { //你的活动 } 打破 违约: 打破 } 返回true;
}

但我已经为这两个按钮设置了两个单独的OnTouchListener。一旦一个按钮被按住,另一个按钮就不起作用了。布尔标志如何解决这个问题?在第二个按钮的
OnTouchListener
中添加
button1.isPressed()
,以检查第一个按钮是否被按下。@mamunshardar我面临同样的问题,您是否能够解决它?。当我的屏幕的一部分被按下后,就没有任何触摸事件记录。一旦一个按钮被按住,另一个按钮就不起作用。布尔标志如何解决这个问题?