private void initViewPager() { // indicator indicatorLayout = (LinearLayout) this.findViewById(R.id.indicatorLayout); indicatorLayout.removeAllViews(); indicatorImageViews = new ImageView[imageURLList.size()]; for (int i = 0; i < imageURLList.size(); i++) { ImageView imageView = new ImageView(this); imageView.setLayoutParams(new LinearLayout.LayoutParams(10, 10)); if (i == 0) { imageView.setBackgroundResource(R.drawable.page_indicator_focused); } else { imageView.setBackgroundResource(R.drawable.page_indicator_unfocused); } indicatorImageViews[i] = imageView; LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams( new ViewGroup.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)); layoutParams.leftMargin = 10; layoutParams.rightMargin = 10; indicatorLayout.addView(indicatorImageViews[i], layoutParams); } // http://www.trinea.cn/android/auto-scroll-view-pager/ // ViewPager viewPager = (AutoScrollViewPager) this.findViewById(R.id.viewPager); viewPager.setInterval(3000); viewPager.setCycle(true); viewPager.setAutoScrollDurationFactor(7.0); viewPager.setSlideBorderMode(AutoScrollViewPager.SLIDE_BORDER_MODE_CYCLE); viewPager.setStopScrollWhenTouch(false); viewPagerAdapter = new ImagePagerAdapter(this, imageURLList); viewPager.setOnPageChangeListener( new ViewPager.OnPageChangeListener() { @Override public void onPageScrollStateChanged(int arg0) {} @Override public void onPageScrolled(int arg0, float arg1, int arg2) {} @Override public void onPageSelected(int index) { int position = index % imageURLList.size(); for (int i = 0; i < imageURLList.size(); i++) { if (i == position) { indicatorImageViews[i].setBackgroundResource(R.drawable.page_indicator_focused); } else { indicatorImageViews[i].setBackgroundResource(R.drawable.page_indicator_unfocused); } } } }); // viewPagerAdapter.setInfiniteLoop(true); viewPager.setAdapter(viewPagerAdapter); viewPager.startAutoScroll(); final GestureDetector tapGestureDetector = new GestureDetector(this, new TapGestureListener()); viewPager.setOnTouchListener( new View.OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { tapGestureDetector.onTouchEvent(event); return false; } }); }