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í.

  • Fragmentos de Viewpager no se muestran después de la primera vez
  • Cómo utilizar el fragmento con Viewpager para páginas de desplazamiento
  • ViewPager en Android está tomando la pantalla completa?
  • Error al inflacionar la clase com.google.android.youtube.player.YouTubePlayerView
  • Cómo cambiar el color del marcador actual de la pestaña en Android ViewPager?
  • Pestañas deslizantes dentro de las pestañas de la barra de acciones
  • Android ViewPager y ListViews
  • Cómo establecer ViewPager dentro de un fragmento
  • Adición dinámica y eliminación de pestañas en TabLayout (diseño de material) android
  • Android: desplazamiento horizontal de varios elementos visibles
  • Haciendo referencia a fragmentos invisibles en ViewPager
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.