Slide automático con ViewPager

publicado por: Anonymous

estoy creando un Slide usando ViewPager el cual puedo cambiar de vistas al deslizar el dedo, pero la ayuda que busco con esta pregunta es saber como puedo generar el movimiento de manera automática y si es posible me oriente en como agregar algúna animación a esta transición como cuando configurámos las animaciones de unas diapositivas para presentación en PowerPoint.

A continuación les muestro el código, agradezco la ayuda.

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.tecnologias.uniagustapp.viewpagerlobelo.MainActivity">
   <android.support.v4.view.ViewPager
    android:id="@+id/view_pager"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    ></android.support.v4.view.ViewPager>
 </LinearLayout>

swipe_layout.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
    android:id="@+id/image_count"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Hello World"
    android:textSize="25dp"
    android:textStyle="bold"
    android:gravity="center"
    android:layout_marginTop="25dp"/>

<ImageView
    android:id="@+id/image_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="25dp"/>
</LinearLayout>

MainActivity

public class MainActivity extends AppCompatActivity {

ViewPager viewPager;
CustomSwipeAadapter adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    viewPager = (ViewPager)findViewById(R.id.view_pager);
    adapter = new CustomSwipeAadapter(this);
    viewPager.setAdapter(adapter);

}
}

CustomSwipeAadapter

public class CustomSwipeAadapter extends PagerAdapter {

private int[] image_resource = {R.drawable.img01,R.drawable.img02,R.drawable.img03};
private Context context;
private LayoutInflater layoutInflater;

public CustomSwipeAadapter(Context context){
    this.context=context;
}

@Override
public int getCount() {
    return image_resource.length;
}

@Override
public boolean isViewFromObject(View view, Object o) {
    return (view == (LinearLayout)o);
}

@Override
public Object instantiateItem(ViewGroup container, int position) {

    layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View item_view = layoutInflater.inflate(R.layout.swipe_layout,container,false);
    ImageView imageView = (ImageView) item_view.findViewById(R.id.image_view);
    TextView textView = (TextView) item_view.findViewById(R.id.image_count);

    imageView.setImageResource(image_resource[position]);
    textView.setText("Imagen : "+(position+1));
    container.addView(item_view);

    return item_view;
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
    container.removeView((LinearLayout)object);
}
}

Tambien he compartido el proyecto aquí: ViewPager

solución

ViewPager tiene un metodo llamado setCurrentItem(index, hacerTrancisionSuave); que te permite desde el codigo seleccionar la pagina que desees indicandole el indice al que desea que navegue el ViewPager:

viewPager = (ViewPager)findViewById(R.id.view_pager);
    adapter = new CustomSwipeAadapter(this);
    viewPager.setAdapter(adapter);

viewPager.setCurrentItem(1, true);

En este ejemplo el ViewPager navega a la pagina que esta en el indice 1 por defecto. Ya solo tendrias que adaptar tu codigo para que lo haga de manera programada.
El ultimo parametro indica si quieres hacer la transicion entre paginas con efecto o no.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *