2012-04-02 53 views
4

我正在做一个项目,我想在单点触控上显示一个特定的消息,在另一个双点触控上使用android.How我可以实现它。如何在Android中执行双击

我的示例代码低于

if(firstTap){ 
      thisTime = SystemClock.u`enter code here`ptimeMillis(); 
      firstTap = false; 
     }else{ 
      prevTime = thisTime; 
      thisTime = SystemClock.uptimeMillis(); 

      //Check that thisTime is greater than prevTime 
      //just incase system clock reset to zero 
      if(thisTime > prevTime){ 

       //Check if times are within our max delay 
       if((thisTime - prevTime) <= DOUBLE_CLICK_MAX_DELAY){ 

        //We have detected a double tap! 
        Toast.makeText(AddLocation.this, "DOUBLE TAP DETECTED!!!", Toast.LENGTH_LONG).show(); 
        //PUT YOUR LOGIC HERE!!!! 

       }else{ 
        //Otherwise Reset firstTap 
        firstTap = true; 
       } 
      }else{ 
       firstTap = true; 
      } 
     } 
     return false; 
+1

您是否考虑过使用长按来替代双击? – Davek804 2012-04-02 05:21:24

+0

看到这个(在Android中实现双击按钮)[http://stackoverflow.com/questions/4849115/implement-double-click-for-button-in-android] – 2012-04-02 05:22:58

+1

请按照android使用模式,并使用长按。不要做双击。 – 2012-04-02 05:23:04

回答

2

您可以长按使用而不是使用双击通过重写此方法

abstract boolean onLongClick(View v) 

当一个视图被点击并举行调用。

1

尝试下面的修改后的代码::

//Check that thisTime is greater than prevTime 
//just incase system clock reset to zero 
static prevtime = 0; 
thistime = Calendar.getInstance().getTimeInMillis(); 
if(prevTime<thistime){ 
//Check if times are within our max delay 
if((thisTime - prevTime) <= 1000){//1 SEC 
//We have detected a double tap! 
Toast.makeText(AddLocation.this, "DOUBLE TAP DETECTED!!!", Toast.LENGTH_LONG).show(); 
prevtime=thistime; 
//PUT YOUR LOGIC HERE!!!! 
}else{ 
//Otherwise Reset firstTap 
    firstTap = true; 
} 
}else{ 
    firstTap = true; 
} 
} 
7

尝试使用GestureDetector

public class MyView extends View { 

GestureDetector gestureDetector; 

public MyView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    // creating new gesture detector 
    gestureDetector = new GestureDetector(context, new GestureListener()); 
} 

// skipping measure calculation and drawing 

// delegate the event to the gesture detector 
@Override 
public boolean onTouchEvent(MotionEvent e) { 
    //Single Tap 
    return gestureDetector.onTouchEvent(e); 
} 


private class GestureListener extends GestureDetector.SimpleOnGestureListener { 

    @Override 
    public boolean onDown(MotionEvent e) { 
     return true; 
    } 

    // event when double tap occurs 
    @Override 
    public boolean onDoubleTap(MotionEvent e) { 
     float x = e.getX(); 
     float y = e.getY(); 

     Log.d("Double Tap", "Tapped at: (" + x + "," + y + ")"); 

     return true; 
    } 

} 
0

我已经实现了在其上点击两次屏幕的背景颜色和文字颜色变化(枪王)这里是代码的代码......

 int i = 0; 
     reader.setOnClickListener(new View.OnClickListener() { 
      int i = 0; 
      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       i++; 
       Handler handler = new Handler(); 
       Runnable r = new Runnable() { 

        @Override 
        public void run() { 
         i = 0; 
        } 
       }; 

       if (i == 1) { 
        //Single click 
        handler.postDelayed(r, 250); 
       } else if (i == 2) { 

        if(color==1) { 

         reader.setTextColor(0xFF000000); 
         reader.setBackgroundColor(0xFFFFFFFF); 
         color = 2; 
        }else if(color==2) 
        { 
         reader.setTextColor(0xFFFFFFFF); 
         reader.setBackgroundColor(0xFF000000); 
         color=1; 
        } 
        i = 0; 

       } 


      } 
     }); 
1

它不放,但是,对于新的读者,我给这个小lib下,检查这篇文章:Double click listener on android

而你只需要使用这样的:

Button btn = new Button(this); 

btn.setOnClickListener(new DoubleClick(new DoubleClickListener() { 
     @Override 
     public void onSingleClick(View view) { 

      // Single tap here. 
     } 

     @Override 
     public void onDoubleClick(View view) { 

      // Double tap here. 
     } 
    });