2017-06-09 3 views
0

ich ein Problem i ein Fragment bin vor haben im Hinblick auf Pager, die ich aktualisieren müssen, wenn der Benutzer Dias von rechts nach links, sollte Dia-Animation mit einem Fragment es sein, hier sind etwas Code, den ich versuche, die Sache ist, dass ich Ansichtpager innerhalb des Fragments auch habe.Eine Richtungs Ansicht Pager mit einem Fragment

Alle Vorschläge Code Hilfe wird geschätzt.

hier sind einige Code, den ich für eine Richtungsansicht Pager

public class CustomViewPager extends ViewPager { 

    private float initialXValue; 
    private SwipeDirection direction; 

    public CustomViewPager(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     this.direction = SwipeDirection.all; 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     if (this.IsSwipeAllowed(event)) { 
      return super.onTouchEvent(event); 
     } 

     return false; 
    } 

    @Override 
    public boolean onInterceptTouchEvent(MotionEvent event) { 
     if (this.IsSwipeAllowed(event)) { 
      return super.onInterceptTouchEvent(event); 
     } 

     return false; 
    } 

    private boolean IsSwipeAllowed(MotionEvent event) { 
     if (this.direction == SwipeDirection.all) return true; 

     if (direction == SwipeDirection.none)//disable any swipe 
      return false; 

     if (event.getAction() == MotionEvent.ACTION_DOWN) { 
      initialXValue = event.getX(); 
      return true; 
     } 

     if (event.getAction() == MotionEvent.ACTION_MOVE) { 
      try { 
       float diffX = event.getX() - initialXValue; 
       if (diffX > 0 && direction == SwipeDirection.right) { 
        // swipe from left to right detected 
        return false; 
       } else if (diffX < 0 && direction == SwipeDirection.left) { 
        // swipe from right to left detected 
        return false; 
       } 
      } catch (Exception exception) { 
       exception.printStackTrace(); 
      } 
     } 

     return true; 
    } 

    public void setAllowedSwipeDirection(SwipeDirection direction) { 
     this.direction = direction; 
    } 
} 

Antwort

0

Können Sie mehr erklären versucht haben? Ich verstehe immer noch nicht, Pager nur 1 Fragment im Inneren sehen? und wie du mit 1 Fragment wischst?

public class NoSwipeViewPager extends ViewPager { 
    private float initialXValue; 
    private SwipeDirection direction; 

    public NoSwipeViewPager(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     this.direction = SwipeDirection.all; 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     if (this.IsSwipeAllowed(event)) { 
      return super.onTouchEvent(event); 
     } 

     return false; 
    } 

    @Override 
    public boolean onInterceptTouchEvent(MotionEvent event) { 
     if (this.IsSwipeAllowed(event)) { 
      return super.onInterceptTouchEvent(event); 
     } 

     return false; 
    } 

    public enum SwipeDirection { 
     all, left, right, none; 
    } 

    private boolean IsSwipeAllowed(MotionEvent event) { 
     if (this.direction == SwipeDirection.all) return true; 

     if (direction == SwipeDirection.none) 
      return false; 

     if (event.getAction() == MotionEvent.ACTION_DOWN) { 
      initialXValue = event.getX(); 
      return true; 
     } 

     if (event.getAction() == MotionEvent.ACTION_MOVE) { 
      try { 
       float diffX = event.getX() - initialXValue; 
       if (diffX > 0 && direction == SwipeDirection.right) { 
        return false; 
       } else if (diffX < 0 && direction == SwipeDirection.left) { 
        return false; 
       } 
      } catch (Exception exception) { 
       exception.printStackTrace(); 
      } 
     } 

     return true; 
    } 

    public void setAllowedSwipeDirection(SwipeDirection direction) { 
     this.direction = direction; 
    } 
} 

und wenn Sie verwenden:

viewPager.setAllowedSwipeDirection(NoSwipeViewPager.SwipeDirection.left); 
+0

Sicher, siehe mein Hauptkonzept basiert nicht auf View Pager, die Voraussetzung ist -1.Ich habe ein Fragment Benutzer sollte Funktionalität zu wischen Fragment von rechts nach links Daten geändert werden, so Folie Animation sollte da von rechts sein nach links mit dem gleichen Fragment –

+0

Ich aktualisiere meine Antwort, bitte versuchen – GiaLe

+0

Ich habe schon versucht, aber es funktioniert nicht –

0

Sie können ViewPager des PageTransformer versuchen. Und hier das Codebeispiel:.

mViewPager.setPageTransformer(false, new FadePageTransformer()); 

/** * Seite der DPAN in der nächsten Karte Transformation für das Verstecken, die teilweise sichtbar ist */

private class FadePageTransformer implements ViewPager.PageTransformer { 

      public void transformPage(View view, float position) { 
    // you can do your work when page is transform 
      } 
     } 

Hoffnung ist helfen.

Verwandte Themen