Android Viewpager salta a la mitad de una página

Así que lo que estoy tratando de lograr es el usuario se abriría a la primera página del paginador de vista, y el paginador de vista rebotaría a la mitad de la segunda página y rebotar de nuevo a la página de puño que indica que hay más páginas para desplazarse. Me preguntaba cómo podría implementar esto?

3 Solutions collect form web for “Android Viewpager salta a la mitad de una página”

Puede utilizar el método fakeDragBy para lograr este efecto:

viewPager.beginFakeDrag(); viewPager.fakeDragBy(offset); //offset in pixels. viewPager.endFakeDrag(); 

EDITAR:

He hecho el método para esto:

 private int animFactor; private ValueAnimator animator = new ValueAnimator(); private void animateViewPager(final ViewPager pager, final int offset, final int delay) { if (!animator.isRunning()) { animator.removeAllUpdateListeners(); animator.removeAllListeners(); //Set animation animator.setIntValues(0, -offset); animator.setDuration(delay); animator.setRepeatCount(1); animator.setRepeatMode(ValueAnimator.RESTART); animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { public void onAnimationUpdate(ValueAnimator animation) { Integer value = animFactor * (Integer) animation.getAnimatedValue(); if (!pager.isFakeDragging()) { pager.beginFakeDrag(); } pager.fakeDragBy(value); } }); animator.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationStart(Animator animation) { animFactor = 1; } @Override public void onAnimationEnd(Animator animation) { pager.endFakeDrag(); } @Override public void onAnimationRepeat(Animator animation) { animFactor = -1; } }); animator.start(); } } 

Ejemplo de uso:

 animateViewPager(pager, 10, 1000); 

Edit2: ValueAnimator es una clase para Api nivel 11. También establece el adaptador de paginador antes de llamar a este método.

Agregar una nota a la respuesta de @ Yuraj. Llame al método en onWindowFocusChanged cuando hasFocus==true como sigue para evitar indexOutOfBoundsException :

 @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); if(hasFocus) { Handler handler = new Handler(); final Runnable r = new Runnable() { public void run() { if(mViewPager.getCurrentItem() == 0) { Context context = Activity_main.this; String filename="Init"; SharedPreferences stats; stats = context.getSharedPreferences(filename, 0); int appOpen = stats.getInt("appOpen", 0); if(appOpen <= 5) { animateViewPager(mViewPager, 10, 300); appOpen += 1; SharedPreferences.Editor editor = stats.edit(); editor.putInt("appOpen", appOpen); editor.commit(); } } } }; handler.postDelayed(r, WAIT_VIEWPAGER_NUDGE); } } 

Primero abra su gradle y compile:

Compilar 'me.everything: overscroll-decor-android: 1.0.3'

Y el código del viewpager:

  viewPager = (ViewPager) findViewById(R.id.walkthrough_pager); OverScrollDecoratorHelper.setUpOverScroll(viewPager); 

Referencia: https://github.com/EverythingMe/overscroll-decor

  • Android ViewPager obtiene la vista actual
  • Instanciar todos los elementos en vista pager android
  • El desplazamiento suave no funciona en ViewPager (biblioteca de soporte)
  • ViewPager con la API de Google Maps v2: vista negra misteriosa
  • Escucha de zoom para PhotoView
  • Utilizar el mismo fragmento en ViewPager pero el fragmento tendrá un diseño diferente cada vez
  • Cómo establecer el tamaño de ViewPager
  • Barra de acción Sherlock: las pestañas no cambiarán en el paisaje al pasar
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.