2012-10-22 67 views
0

我有一個問題,那就是如何定義何時進行移動動作以及何時只需點擊MapView中的地理點。事情是,當我只點擊下列evEnts出現:ACTION_DOWN(1火),ACTION_MOVE(3火焰),ACTION_DOWN(1火)。當我移動出現以下事件時:ACTION_DOWN(1點火),ACTION_MOVE(點火焰),ACTION_DOWN(點火)。Android MapVIew:如何從簡單的水龍頭檢測運動?

如何定義它,它不會blok onTap函數其中是一個地理點alertDialog?

我做了什麼,但我亂了一下:

@Override 
    protected boolean onTap(int index) { 
    Log.i("Tapped? ", "TAP!"); 
    if (mOverlays.get(index) != null && !touchStarted) { 
     OverlayItem item = mOverlays.get(index); 
     alert.showAlertDialog(mContext, item.getTitle(), item.getSnippet(), true); 
     return true; 
    } else { 
     return false; // Null GeoPoint 
    } 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event, MapView mapView) { 

    Log.e("Touch", Integer.toString(event.getAction())); 

    int action = event.getAction(); 
    if (action == MotionEvent.ACTION_DOWN) { 
     touchStarted = true; 
    } else if (action == MotionEvent.ACTION_MOVE) { 
     // movement: cancel the touch press 

     touchStarted = false; 

     if (event.getPointerCount() > 3) 
     Log.e("Movement", "Yeee"); 
     return true; 

    } 
    return true; 
    } 

回答

0

在你的活動實施onDoubleTapListener尋找水龍頭事件,並在的onTouchEvent爲你做,你將能夠處理移動事件。使用開關的情況下,用於檢查移動和其他行爲來代替if語句以提高性能

例如,如果ABC是您的活動類,那麼,

public class abc extends Activity implements OnDoubleTapListener{ 
    //Double tap listener 

    public boolean onSingleTapConfirmed(MotionEvent event) { 
     //your code 
    } 
}