2012-04-15 4 views
1

Ich versuche, mehrere Listeners zu meiner Ansicht hinzuzufügen. OnTouchListener-Ereignisse werden ausgelöst, nicht jedoch die langen Druckereignisse. Irgendein Grund warum? Wie löse ich es? :)Implementieren sowohl von OnTouchListener als auch von LongPressListener zu einer Ansicht

Hier ist meine Quelle:

bookFlipper.setOnLongClickListener(new OnLongClickListener() { 
    public boolean onLongClick(View v){ //not fired 
     Log.d(tag, "Long press invoked!"); 
     //selectText(); 
     return true; 
    } 
}); 

bookFlipper.setOnTouchListener(new View.OnTouchListener() { 

    public boolean onTouch(View v, MotionEvent event){ 

     if(!menuShown && !selectionMode){ 
      bookFlipper.onTouchEvent(event); 
     } 

     switch(event.getAction()){ 

     case MotionEvent.ACTION_MOVE: 
      if(selectionMode){ 

      } 
      return false; 
     case MotionEvent.ACTION_DOWN: 
      lastDownX = event.getX(); 
      lastDownY = event.getX(); 
      touchingBook = true; 
      break; 
     case MotionEvent.ACTION_UP: 
      touchingBook = false; 
      if(!selectionMode){ 
       float diff = event.getX()/screenWidth; 
       float diffOld = lastDownX/screenWidth; 
       if(diff <= 0.33 && diffOld <= 0.33 && !menuShown){ // left 
        prevPage(); 
       }else if(diff >= 0.66 && diffOld >= 0.66 && !menuShown){// right 
        nextPage(); 
       }else if(diff < 0.66 && diff > 0.33 && diffOld < 0.66 && diffOld > 0.33){ // middle 
        showOverlay(!menuShown); 
       } 
      } 
      break; 
     default: 
      break; 
     } 
     return false; 
    } 
}); 

Thanks :)

Antwort

Verwandte Themen