2016-07-19 1 views
-4

나는 루프를 중지해야합니다. 나는 4 명의 사진을 가지고있다. 그래서 그 슬라이드 다음에 4 장의 그림으로 가면 슬라이드를 멈출 필요가있다.어떻게 안드로이드에서 루프 슬라이드 쇼를 중지

주요 활동 :

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

좋아 중단해야합니다, 그래서 당신은 당신이 뭘 하려는지 우리에게 우리에게 코드의 85 개 라인을 표시했습니다 - 그 둘 사이의 차이는 무엇인가? 이제는 어떤 일이 일어나기를 원하지 않거나 그 반대일까요? –

+0

이제 루프에서 사진을 스크롤합니다 ... 항상 슬라이딩 ...하지만 루프가 필요하지 않습니다 ... 모든 사진은 한 번만 슬라이드해야합니다. – alex

+1

아주 명확한 설명이 아닌가 걱정됩니다. 질문을 편집하여 문제가 무엇인지 명확하게 설명하십시오. 문제를 설명하는 데 필요한 최소한의 코드로 줄이는 것이 이상적입니다. –

답변

0

나는 코드에 대한 확실하지 않다 그러나 나는이 문제에 대해 생각 :

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

그것은이 조건 (currentPage == NUM_PAGES)과를 확인하는 끝에 도달 할 때마다

마지막에 도달하면 그냥 멈추고 싶다면 다음을 사용하십시오 :

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

이 경우는 currentPage == NUM_PAGES

+0

작동합니다! 감사! – alex

+0

@alex 아무 문제 없어, 다행스럽게 도울 수있어! :) – Signo

관련 문제