2016-07-19 10 views
-4

ich muss loop stoppen. Ich habe vier Bilder: also nach dieser Folie gehe zu 4 Bild Ich muss aufhören zu gleiten.wie stoppen schleife slideshow in android

HAUPTTÄTIGKEIT:

public class MainActivity extends AppCompatActivity { 
    private static ViewPager mPager; 
    private static int currentPage = 0; 
    private static int NUM_PAGES = 0; 
    private static final Integer[] IMAGES= {R.drawable.one,R.drawable.two,R.drawable.three,R.drawable.five}; 
private ArrayList<Integer> ImagesArray = new ArrayList<Integer>(); 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     init(); 
    } 

    private void init() { 

     for(int i=0;i<IMAGES.length;i++) 
      ImagesArray.add(IMAGES[i]); 

     mPager = (ViewPager) findViewById(R.id.pager); 

     mPager.setAdapter(new SlidingImage_Adapter(MainActivity.this,ImagesArray)); 

     CirclePageIndicator indicator = (CirclePageIndicator) 
       findViewById(R.id.indicator); 

     indicator.setViewPager(mPager); 

     final float density = getResources().getDisplayMetrics().density; 

     indicator.setRadius(5 * density); 

     NUM_PAGES =IMAGES.length; 

     // Auto start of viewpager 
     final Handler handler = new Handler(); 
     final Runnable Update = new Runnable() { 
      public void run() { 
       if (currentPage == NUM_PAGES) { 
        currentPage = 0; 
       } 
       mPager.setCurrentItem(currentPage++, true); 
      } 
     }; 
     Timer swipeTimer = new Timer(); 
     swipeTimer.schedule(new TimerTask() { 
      @Override 
      public void run() { 
       handler.post(Update); 
      } 
     }, 3000, 3000); 

     // Pager listener over indicator 
     indicator.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 

      @Override 
      public void onPageSelected(int position) { 
       currentPage = position; 

      } 

      @Override 
      public void onPageScrolled(int pos, float arg1, int arg2) { 

      } 

      @Override 
      public void onPageScrollStateChanged(int pos) { 

      } 
     }); 

    } 

} 
+1

Okay, Sie haben uns gesagt, was Sie versuchen, uns 85 Zeilen Code zu tun, und gezeigt - was ist der Unterschied zwischen diesen beiden? Was passiert jetzt, wo du nicht passieren willst oder umgekehrt? –

+0

jetzt Bilder scrollen in Schleife ... immer rutschen ... aber ich brauche keine Schleife ... alle Bilder müssen nur einmal schieben – alex

+1

Ich fürchte, das ist kein sehr klarer Kommentar. Bitte bearbeiten Sie Ihre Frage, um das Problem genauer zu beschreiben - und reduzieren Sie Ihren Code im Idealfall auf das Minimum, das zur Demonstration des Problems erforderlich ist. –

Antwort

0

bin ich über den Code nicht sicher, aber ich denke, das Problem ist hier:

final Runnable Update = new Runnable() { 
      public void run() { 
       if (currentPage == NUM_PAGES) { 
        currentPage = 0; 
       } 
       mPager.setCurrentItem(currentPage++, true); 
      } 
     }; 

Jedes Mal, wenn das Ende erreicht ist es für diesen Zustand überprüft (currentPage == NUM_PAGES) und Neustarts von 0.

Wenn Sie nur aufhören wollen, wenn es das Ende erreicht, sollten Sie folgendes verwenden:

final Runnable Update = new Runnable() { 
       public void run() { 
        if (currentPage < NUM_PAGES) { 
         mPager.setCurrentItem(currentPage++, true); 
        } 
       } 
      }; 

Es sollte aufhören, wenn currentPage == NUM_PAGES

+0

es funktioniert! Vielen Dank! – alex

+0

@alex kein Problem, froh, ich könnte helfen! :) – Signo