Saltar al contenido

Cómo deslizar automáticamente Android View Pager

Hola, descubrimos la solución a tu pregunta, deslízate y la verás un poco más abajo.

Solución:

Ajuste smoothScroll = true en setCurrentItem(int item, boolean smoothScroll) no siempre tiene el efecto de desplazamiento suave. Supongamos que si tiene menos de 5 páginas en su visor, apenas notará el desplazamiento suave.

En este escenario, la forma difícil de hacerlo es ponerlo en un bucle for

//This will scroll page-by-page so that you can view scroll happening
for (int i = 0; i < mAdapter.getCount()-1; i++)
    mPager.setCurrentItem(i, true);

Si alguien necesita un desplazamiento más lento, puede usar postDelayed() como este...

static int i=0;
private final Handler handler = new Handler();
somefunction()

    handle.post(ViewPagerVisibleScroll);


    Runnable ViewPagerVisibleScroll= new Runnable() 
                @Override
                public void run() 
                    if(i <= mAdapter.getCount()-1)
                    
                        mPager.setCurrentItem(i, true);
                        handle.postDelayed(TopChartAnimation, 100);
                        i++;
                    
                
            ;

Dormir siempre NO es recomendable : Si alguien necesita un desplazamiento más lento, puede usar una suspensión en este ciclo for...

@Override
public void onClick(View v) 
Runnable runnable = new Runnable() 
                @Override
                public void run() 
                    for (int i = 0; i < mAdapter.getCount()-1; i++) 
                        final int value = i;
                        try 
                            Thread.sleep(50);
                         catch (InterruptedException e) 
                            e.printStackTrace();
                        
                        handler.post(new Runnable() 
                            @Override
                            public void run() 
                                mPager.setCurrentItem(value, true);
                            
                        );
                    
                
            ;
            new Thread(runnable).start();

        

Probablemente, debería echar un vistazo a las siguientes API ViewPager.beginFakeDrag(), ViewPager. fakeDragBy (compensación flotante) y ViewPager.endFakeDrag() si desea una simulación de arrastre. Además, las API setCurrentItem() brindan la capacidad de configurar la página actual y hacerlo sin problemas. La forma más sencilla que podría sugerir para hacer la diapositiva automáticamente es configurar el controlador con Runnable simple que llamaría a los métodos de buscapersonas para configurar el elemento en la actividad y simplemente hacer postDelayed() para ello. Y no olvides llamar a removeCallbacks() para ello cuando la interacción del usuario o, por ejemplo, la actividad se detenga.

Primero cree la extensión de la clase Slider con TimerTask

public class SliderTimer extends TimerTask 
    private ViewPager viewPager;
    private int size;
    private Activity activity;

    public SliderTimer(ViewPager viewPager, int size, Activity activity) 
        this.viewPager = viewPager;
        this.size = size;
        this.activity = activity;
    

    @Override
    public void run() 
        activity.runOnUiThread(() -> 
            if (viewPager.getCurrentItem() < size - 1) 
                viewPager.setCurrentItem(viewPager.getCurrentItem() + 1, true);
             else 
                viewPager.setCurrentItem(0, true);
            
        );
    

Siguiente Crear SpeedSlowScroller para desplazamiento lento

public class SpeedSlowScroller extends Scroller 

    private int mDuration = 2500;

    public SpeedSlowScroller(Context context) 
        super(context);
    

    public SpeedSlowScroller(Context context, Interpolator interpolator) 
        super(context, interpolator);
    

    public SpeedSlowScroller(Context context, Interpolator interpolator, boolean flywheel) 
        super(context, interpolator, flywheel);
    


    @Override
    public void startScroll(int startX, int startY, int dx, int dy, int duration) 
        // Ignore received duration, use fixed one instead
        super.startScroll(startX, startY, dx, dy, mDuration);
    

    @Override
    public void startScroll(int startX, int startY, int dx, int dy) 
        // Ignore received duration, use fixed one instead
        super.startScroll(startX, startY, dx, dy, mDuration);
    

Finalmente agregar SpeedSlowScroller en ViewPager, y Control deslizante Temporizador para desplazamiento automático

try 
 Field mScroller = ViewPager.class.getDeclaredField("mScroller");
 mScroller.setAccessible(true);
 SpeedSlowScroller scroller = new SpeedSlowScroller(_context);
 mScroller.set(your_viewpager, scroller);
 Timer timer = new Timer();
 timer.scheduleAtFixedRate(new SliderTimer(your_viewpager, models.size(), activity), 4000, 6000);
  catch (Exception ignored) 
 

Puntuaciones y reseñas

¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 4)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *