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).
- ViewPager con Fragmentos que contienen TableLayouts se carga lentamente:
- ViewPager omitir las vistas de devolución dejando en blanco
- MuPDF para Android: opción para el fragmento en su lugar Actividad
- ¿Por qué no es posible usar ViewPager dentro de un Fragmento? En realidad es
- android: ¿Actualizar los elementos de ActionBar dependiendo de cada Fragmento en un ViewPager?
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; } }
}
- ViewPager con múltiples PageTransformer (PageTransformers en Runtime)
- ListView con Viewpager como un encabezado dentro de TabPageIndicator
- ¿Cómo agregar margen entre EditText y Soft Keyboard?
- Uso de la animación en un ViewPager y setFillAfter
- ViewPager establece la página actual por programación
- Cómo agregar una vista personalizada en ViewPager para un tutorial
- Cómo saber viewpager es desplazarse a la izquierda oa la derecha?
- Ver Holder Pattern para ViewPager?
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í.
- Reiniciar un dispositivo de la brecha telefónica
- Android: Compartir (algo) a través de Intent.ACTION_SEND, luego volver automáticamente a mi aplicación