Android-Cómo animar viewPager

Este es mi código para hacer ViewPager . Quiero animar entre cambiar las páginas. Así que escribo este código:

 ViewPagerAdapter adapter; adapter = new ViewPagerAdapter(FistActiivty.this,imges); vp.setAdapter(adapter); pageSwitcher(2); try { Field mScroller; mScroller = ViewPager.class.getDeclaredField("mScroller"); mScroller.setAccessible(true); Interpolator sInterpolator = new AccelerateInterpolator(); FixedSpeedScroller scroller = new FixedSpeedScroller(vp.getContext(), sInterpolator); // scroller.setFixedDuration(5000); mScroller.set(vp, scroller); } catch (Exception e) { Log.v("this",e.getMessage()); } public class FixedSpeedScroller extends Scroller { private int mDuration = 2000; public FixedSpeedScroller(Context context) { super(context); } public FixedSpeedScroller(Context context, Interpolator interpolator) { super(context, interpolator); } public FixedSpeedScroller(Context context, Interpolator interpolator, boolean flywheel) { super(context, interpolator, flywheel); } @Override public void startScroll(int startX, int startY, int dx, int dy, int duration) { 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); } } public void pageSwitcher(int seconds) { timer = new Timer(); // At this line a new Thread will be created timer.scheduleAtFixedRate(new RemindTask(), 0, seconds * 1000); } class RemindTask extends TimerTask { @Override public void run() { runOnUiThread(new Runnable() { public void run() { Log.v("this","change pager " +page); if (page > imges.length) { vp.setCurrentItem(0); page=1; } else { vp.setCurrentItem(page++); } } }); } } class ViewPagerAdapter extends PagerAdapter { Context context; String[] img; LayoutInflater inflater; ImageLoader imageLoader = ImageLoader.getInstance(); DisplayImageOptions options; private ImageLoadingListener imageListener; public ViewPagerAdapter(Context context, String[] img) { this.context = FistActiivty.this; this.img = img; } @Override public int getCount() { return img.length; } @Override public boolean isViewFromObject(View view, Object object) { return view == ((RelativeLayout) object); } @Override public Object instantiateItem(ViewGroup container, int position) { ImageView imgflag; inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View itemView = inflater.inflate(R.layout.viewpager_item, container,false); imgflag = (ImageView) itemView.findViewById(R.id.flag); imageLoader.displayImage(img[position], imgflag,options, imageListener); ((ViewPager) container).addView(itemView); return itemView; } @Override public void destroyItem(ViewGroup container, int position, Object object) { // Remove viewpager_item.xml from ViewPager ((ViewPager) container).removeView((RelativeLayout) object); } } 

El resultado de este código es este. Cambia el viewpager cada 2 segundos y funciona muy bien pero no anima entre cambiar las páginas pero cuando cambio manualmente el buscapersonas, lo anima.

¿Cómo puedo forzarlo a animar cuando quiere cambiar las páginas?

Gracias.

2 Solutions collect form web for “Android-Cómo animar viewPager”

Trate de usar la opción smoothscroll si eso es lo que quiere decir.
Cambie a esto dentro de su TimerTask.

 if (page > imges.length) { vp.setCurrentItem(0, true); page=1; } else { vp.setCurrentItem(page++, true); } 

Creo que debería usar PageTransformer para aplicar animaciones en el cambio de página.

Por favor, visite este enlace …

  • Endless ViewPager android
  • FragmentPagerAdapter actualización de título dinámicamente
  • Agregando Viewpager como un encabezado a un listView
  • ¿Cómo hacer el FAB evitar ser movido en ViewPager, sin embargo, ser una parte del fragmento dentro?
  • Android "primera vez" aplicación user tutorial
  • ViewPager no muestra nada
  • ViewPager espera a finalizar antes de que se hagan todos los fragmentos
  • Ver indicador de buscapersonas Jake Wharton
  • Índice de fragmentos de resultados de actividad Fuera del rango: 0x20001
  • Un solo lado de ViewPager
  • Adaptador de cambio de viewpager android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.