2012-05-31 8 views
7

En mi proyecto utilicé en TouchEvent para detectar el toque en la pantalla y hacer las acciones correspondientes, y he usado viewPager para deslizar la acción. El problema está en deslizar las acciones táctiles que se están ejecutando. a fin de encontrar la solución de here lo resolvió. Pero mi nuevo problema es que el toque se desactiva después de que se ejecuta TouchEvent.Action_up. código es el siguiente:onTouchEvent se está ejecutando cuando se pasa la página utilizando ViewPager y PassByValue

parent.setOnTouchListener(new OnTouchListener() { 

    public boolean onTouch(View v, MotionEvent event) { 

     switch(event.getAction()) 
     { 
     case MotionEvent.ACTION_MOVE: 
       awesomePager.requestDisallowInterceptTouchEvent(true); 
       break; 
     case MotionEvent.ACTION_UP: 
      awesomePager.requestDisallowInterceptTouchEvent(true); 
      if(flag) 
      { 
       upperdock.setClickable(false); 
       upperdock.bringToFront(); 
       tocparent.bringToFront(); 
       tocbottom.bringToFront(); 
       upperdock.setVisibility(RelativeLayout.VISIBLE); 
       tocparent.setVisibility(LinearLayout.VISIBLE); 
       tocbottom.setVisibility(LinearLayout.VISIBLE); 
       flag=false; 
      } 
      else 
      { 

       parent.bringToFront(); 
       upperdock.setVisibility(RelativeLayout.INVISIBLE); 
       tocparent.setVisibility(LinearLayout.INVISIBLE); 
       tocbottom.setVisibility(LinearLayout.INVISIBLE); 
       flag=true; 
      } 
      break; 

     case MotionEvent.ACTION_CANCEL: 
      awesomePager.requestDisallowInterceptTouchEvent(false); 
      break; 
     default: 
      break; 
     } 

     return false; 
    } 
}); 

En el código anterior si vuelvo falsa Action_up no está siendo ejecutado .. si vuelvo cierto Action_cancel no está recibiendo executed..that se paso por valor es el problema en ese país.

Respuesta

2

cambio algo por esto.

No utilice awesomePager.requestDisallowInterceptTouchEvent(false), sólo tiene que utilizar return true.

en el actividad define a boolean sroll;

conjunto sroll = positionOffset! = 0,0 en ViewPager.onPageScrolled y puedo reemplazar onTouchEvent en la que el vista en el ViewPager.

ahora se puede comprobar si (event.getAction() == MotionEvent.ACTION_UP & &! Sroll) para decidir si el evento desencadenado voluntad

1

que tenía el mismo problema! Para mí esto ha funcionado muy bien ....

case MotionEvent.ACTION_MOVE: { 
     getParent().requestDisallowInterceptTouchEvent(false); 
     break; 
    } 

case MotionEvent.ACTION_CANCEL:{ 
     getParent().requestDisallowInterceptTouchEvent(true); 
     break; 

} 

case MotionEvent.ACTION_UP:{ 

//delete awesomePager.requestDisallowInterceptTouchEvent(true); 
//you don't need it here! 
       . 
       . 
      do your stuff.... 
       . 

} 

devolver toda la méthode onTouch como verdadera y no falsa ...

return true; 
Cuestiones relacionadas