2012-08-08 16 views
6

मेरे पास एक कक्षा है जो SimpleOnPageChangeListener को बढ़ाती है और मेरे ऑनपेजस्क्रॉलस्टेट चेंज विधि में मैं यह निर्धारित करने में सक्षम होना चाहता हूं कि उपयोगकर्ता ने ViewPager के माध्यम से आगे या पीछे स्वाइप किया है या नहीं। अर्थात। चाहे वे बाएं से दाएं या दाएं से बाएं स्वाइप हों।एंड्रॉइड SimpleOnPageChangeListener - स्वाइप दिशा निर्धारित करें

मैंने इस पर बहुत कुछ किया है लेकिन मुझे इसके बारे में कुछ भी नहीं मिला है। मैं उम्मीद कर रहा था कि OnPageScrollStateChanged विधि एक पैरामीटर प्रदान करेगी जो बताती है कि स्वाइप किस दिशा में था लेकिन यह नहीं है।

@Override 
    public void onPageScrollStateChanged(int state) { 

     // Determine whether the user is swiping forwards or backwards through the ViewPager 
    } 

क्या किसी के पास कोई विचार है?

चीयर्स माइक

उत्तर

2

ViewPager.SimpleOnPageChangeListener उपयोग और, इस तरह आप काम कर सकते हैं जो जिस तरह से यह स्वाइप किया गया है वर्तमान टैब स्थिति के साथ एक उदाहरण वर रहते हैं। त्वरित जवाब के लिए

private final ViewPager.SimpleOnPageChangeListener mPageChangeListener = new ViewPager.SimpleOnPageChangeListener() { 

     @Override 
     public void onPageSelected(final int position) { 
      onTabChanged(mPager.getAdapter(), mCurrentTabPosition, position); 
      mCurrentTabPosition = position; 
     } 
    }; 

protected void onTabChanged(final PagerAdapter adapter, final int oldPosition, final int newPosition) { 
     //Calc if swipe was left to right, or right to left 
     if (oldPosition>newPosition){ 
      // left to right 
     } 
     else{ 
      //right to left 
     } 

    } 
+0

हाय Scottyab.Thanks। मैंने इस समाधान को कार्यान्वित किया है लेकिन पृष्ठ को पहले से ही बदलने के बाद ही आग लग गई है। मैं उपयोगकर्ता को आगे बढ़ने से रोकने के लिए कुछ सत्यापन करना चाहता हूं लेकिन उन्हें पीछे की तरफ जाने की अनुमति देना चाहता हूं। इस समाधान के साथ पृष्ठ पहले ही बदल चुका है। – mighele

0
 int prevPage; 

     @Override 
     public void onPageSelected(int position) { 
      // went back a page 
      if (position-1 == prevPage) { 
       Log.i("Swipped", "Swipped Left"); 
      } 
      // went up a page 
      if (position+1 == prevPage) { 
       Log.i("Swipped", "Swipped Right"); 
      } 
      prevPage = position; 


     } 
संबंधित मुद्दे