2012-05-31 8 views
7

मेरी परियोजना में उपयोग करते हुए स्वाइप है onTouchEvent मार डाला जा रहा है स्क्रीन पर स्पर्श का पता लगाने और तदनुसार कार्रवाई करने के लिए onTouchEvent का इस्तेमाल किया है, और कड़ी चोट कार्रवाई के लिए viewPager इस्तेमाल किया है। समस्या कड़ी चोट टच कार्यवाहियों को निष्पादित किया जा रहा है पर है। तो समाधान खोजने के here से इसे हल। लेकिन यह करने के लिए अपने नए समस्या स्पर्श एक बार TouchEvent.Action_up निष्पादित हो जाता है के बाद अक्षम हो रही है है।जब पेज ViewPager और 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; 
    } 
}); 

उपरोक्त कोड में अगर मैं वापस जाने के झूठे Action_up निष्पादित नहीं हो रही है .. अगर मैं लौट सच Action_cancel नहीं मिल रहा है executed..that मूल्य द्वारा पारित वहाँ में समस्या है: कोड इस प्रकार है।

उत्तर

2

मैं इस के लिए कुछ बदल जाते हैं।

awesomePager.requestDisallowInterceptTouchEvent(false) का उपयोग नहीं, सिर्फ return true का उपयोग करें।

गतिविधिबुलीयन स्क्रॉल परिभाषित करें;

सेट sroll = positionOffset! = 0.0में ViewPager.onPageScrolled और मैं onTouchEvent ओवरराइड जिसमें ViewPager में दृश्य।

अब

आप जाँच कर सकते हैं अगर (event.getAction() == MotionEvent.ACTION_UP & &! Sroll) घटना है कि क्या इच्छा

1

शुरू हो मैं एक ही समस्या थी तय करने के लिए! मेरे लिए यह बहुत अच्छी तरह से काम किया ....

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.... 
       . 

} 
के रूप में सही और गलत नहीं अपने पूरे onTouch methode

लौट ...

return true;