El paginador de vista de Android cambia las páginas automáticamente después de unos segundos
He utilizado el buscapersonas de vista de Android para mostrar imágenes y texto ahora lo que quiero es que si un usuario no está cambiando las imágenes, entonces debería comenzar a cambiar las imágenes automáticamente después de unos segundos y cuando el usuario vuelve a empezar a usar su dedo, las imágenes No debe cambiar automáticamente?
He intentado utilizar el controlador para crear un retraso, pero no funcionó para mí?
- Añadir / eliminar páginas a ViewPager dinámicamente
- Obtención del error "La actividad Java.lang.IllegalStateException se ha destruido" al utilizar pestañas con ViewPager
- Caché de ActionBarSherlock + ViewPager más que sólo vista anterior / siguiente
- Actualizar datos en ListFragment como parte de ViewPager
- Actividad del botón con viewPager?
Por favor, ayude a alguien
public class SimpleImageViewerActivity extends Activity implements ViewPager.OnPageChangeListener{ private Handler handler; ViewPager myPager; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.imageslideshow); MyPagerAdapter adapter = new MyPagerAdapter(); myPager = (ViewPager) findViewById(R.id.slideShowPager); myPager.setAdapter(adapter); myPager.setCurrentItem(0); handler = new Handler(); myPager.setOnPageChangeListener(this); } private class MyPagerAdapter extends PagerAdapter { public int getCount() { return 5; } 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.farleft; break; case 1: resId = R.layout.left; break; case 2: resId = R.layout.middle; break; case 3: resId = R.layout.right; break; case 4: resId = R.layout.farright; 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 void finishUpdate(View arg0) { // TODO Auto-generated method stub } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == ((View) arg1); } @Override public void restoreState(Parcelable arg0, ClassLoader arg1) { // TODO Auto-generated method stub } @Override public Parcelable saveState() { // TODO Auto-generated method stub return null; } @Override public void startUpdate(View arg0) { // TODO Auto-generated method stub } } @Override public void onPageScrollStateChanged(int arg0) { // TODO Auto-generated method stub } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { // TODO Auto-generated method stub updateUI(arg2); } @Override public void onPageSelected(int arg0) { // TODO Auto-generated method stub //updateUI(arg0); } public void onNothingSelected(AdapterView<?> adapterView) { final int i =0; adapterView.postDelayed(new Runnable(){ @Override public void run() { // TODO Auto-generated method stub updateUI(i); } }, 5000); Toast.makeText(this, "In nothing selected method",Toast.LENGTH_SHORT).show(); } private void updateUI(final int fi) { /* handler.post(new Runnable() { public void run() { gallery.setSelection(i); viewPager.setCurrentItem(i); //textView.setText("Photo #" + i); } });*/ handler.postDelayed(new Runnable() { public void run() { int i=fi; int j = i; myPager.setCurrentItem(j++); System.out.println("Hello"); } },1000); } }
- ViewPager en DialogFragment, IllegalStateException: Fragmento no tiene una vista
- Obtención del error "La actividad Java.lang.IllegalStateException se ha destruido" al utilizar pestañas con ViewPager
- Cómo destruir fragmentos antiguos en FragmentStatePagerAdapter
- Animación de Cube Flip para Fragments en Android
- Resaltar o subrayar seleccionado TabPageIndicator
- Posición de PagerTabStrip dentro de ViewPager
- ¿Puede ViewPager tener varias vistas en cada página?
- ViewPager dentro de BottomSheetDialogFragment
Utilice el temporizador javautil y configure uno y al final del temporizador puede utilizar
class UpdateTimeTask extends TimerTask { public void run() { //Code for the viewPager to change view } } // Code to schedule the timer timer = new Timer(); timer.schedule(new UpdateTimeTask(), 100, 200);
Espero que esto ayude, use los documentos de Android para llamadas de API exactas
<ViewPager>.setCurrentitem(i++%<MaxViews>)
En lo que respecta a la actualización de la interfaz de usuario se puede hacer a través de manejador, así que llamar a un controlador dentro de la clase timertask, puede hacer algo como esto:
Timer timer=null; static int time_tomove = 0; class UpdateTimeTask extends TimerTask { public void run() { //Code for the viewPager to change view System.out.println("The value of the time_tomove "); time_tomove++; Message msg = handler_timer.obtainMessage(); Bundle b = new Bundle(); b.putInt("time", time_tomove); msg.setData(b); handler_timer.sendMessage(msg); } } public static Handler handler_timer = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); magazineHolder.setCurrentItem(time_tomove); } };
Después de hacer esto, puede llamar a las siguientes dos líneas dentro de su método onresume o oncreate ()
timer = new Timer(); timer.schedule(new UpdateTimeTask(), 100, 2000);
- Margen ajustado a la primera línea de textView
- Pestaña simple que utiliza fragmentactivity en lugar de tabactivity