Desplazamiento de imágenes (no de diseños) con viewpager

Lo que hace mi código:

Aquí está mi código que para viewpager que pasa entre xml layouts (named left.xml, right.xml y center.xml).

Lo que quiero que haga

Quiero pasar de una imagen a otra (almacenada en la carpeta dibujable). Cuando reemplazo R.layout.xml con R.drawable.image, mi aplicación se bloquea. ¿Puede alguien ayudarme a resolverlo?

public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); MyPagerAdapter adapter = new MyPagerAdapter(); ViewPager myPager = (ViewPager) findViewById(R.id.myfivepanelpager); myPager.setAdapter(adapter); myPager.setCurrentItem(0); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } class MyPagerAdapter extends PagerAdapter { public int getCount() { return 3; } public Object instantiateItem(View collection, int position) { LayoutInflater inflater = (LayoutInflater) collection.getContext() .getSystemService(Context.LAYOUT_INFLATER_SERVICE); int resId = 0; switch (position) { case 0: resId = R.layout.left; break; case 1: resId = R.layout.center; break; case 2: resId = R.layout.right; break; } View view = inflater.inflate(resId, null); ((ViewPager) collection).addView(view, 0); return view; } @Override public void destroyItem(View arg0, int arg1, Object arg2) { ((ViewPager) arg0).removeView((View) arg2); } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == ((View) arg1); } @Override public Parcelable saveState() { return null; } } 

}

Si está utilizando la misma implementación y sólo agregando R.drawable.XXX lugar de R.layout.YYY entonces el problema está ahí. Está utilizando LayoutInflater para inflar ImageView s, el inflador de diseño como se indica por sí mismo que infla un diseño completo en una sola View .

En lugar de hacerlo intenta crear objetos ImageView través de código y luego en la return return el ImageView recién creado. Algún código de ejemplo sería:

 public Object instantiateItem(View collection, int position) { ImageView img = new ImageView(context); //this is a variable that stores the context of the activity //set properties for the image like width, height, gravity etc... int resId = 0; switch (position) { case 0: resId = R.drawable.img1; break; case 1: resId = R.drawable.img2; break; case 2: resId = R.drawable.img3; break; } img.setImageResource(resId); //setting the source of the image return img; } 

Si sólo está utilizando una cantidad específica de imágenes o páginas, debería considerar agregarlas en el xml que contiene ViewPager lugar de crear dinámicamente ViewPager .

Creo que una opción sería insertar cada imagen en su propio diseño con un ImageView y luego inflar el diseño que la imagen está en vez de la imagen en sí.

  • Barra lateral de Android como facebook o firefox
  • Página curl con vista pager
  • Android ViewPager Detectar desplazamiento vertical
  • ¿Cómo mostrar sólo imágenes de memoria caché en ViewPager con Universal Image Loader Android?
  • Mis fragmentos en la pestaña viewpager no se actualizan
  • Android ViewPager cambia automáticamente la página
  • SlidingMenu y ViewPager con API13 (Honeycomb)
  • Tengo un error extraño al usar un ViewPager dentro de un Fragmento
  • ViewPager Adapter getItem siempre llamado para el índice 0 y 1
  • Viewpager no obtiene el último elemento
  • Horizontal y Vertical ViewPager juntos
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.