1.导入需要使用的包
compile 'com.github.JakeWharton:ViewPagerIndicator:2.4.1'
2.写2个需要使用的文件
第一个文件 public class AutoScrollPagerFragment extends Fragment { private String[] imgs = {"http://h.hiphotos.baidu.com/image/w%3D1920%3Bcrop%3D0%2C0%2C1920%2C1080/sign=fed1392e952bd40742c7d7f449b9a532/e4dde71190ef76c6501a5c2d9f16fdfaae5167e8.jpg", "http://a.hiphotos.baidu.com/image/w%3D1920%3Bcrop%3D0%2C0%2C1920%2C1080/sign=25d477ebe51190ef01fb96d6fc2ba675/503d269759ee3d6df51a20cd41166d224e4adedc.jpg", "http://c.hiphotos.baidu.com/image/w%3D1920%3Bcrop%3D0%2C0%2C1920%2C1080/sign=70d2b81e60d0f703e6b291d53aca6a5e/0ff41bd5ad6eddc4ab1b5af23bdbb6fd5266333f.jpg"}; private String[] titles = {"Page 1", "Page 2", "Page 3"}; private DisplayImageOptions options = new DisplayImageOptions.Builder().cacheInMemory(true) .cacheOnDisk(true).imageScaleType(ImageScaleType.IN_SAMPLE_INT).build(); private Toast toast; public AutoScrollPagerFragment() { // Required empty public constructor } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_auto_scroll_pager, container, false); } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); AutoScrollViewPager pager = (AutoScrollViewPager) getView().findViewById(R.id.scroll_pager); final TextView title = (TextView) getView().findViewById(R.id.title); CirclePageIndicator indicator = (CirclePageIndicator) getView().findViewById(R.id.indicator); pager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { @Override public void onPageSelected(int i) { title.setText(titles[i]); } }); pager.setAdapter(new PagerAdapter() { @Override public int getCount() { return imgs.length; } @Override public boolean isViewFromObject(View view, Object o) { return view == o; } @Override public Object instantiateItem(ViewGroup container, int position) { ImageView view = new ImageView(container.getContext()); view.setScaleType(ImageView.ScaleType.CENTER_CROP); ImageLoader.getInstance().displayImage(imgs[position], view, options); container.addView(view); return view; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } }); indicator.setViewPager(pager); indicator.setSnap(true); pager.setScrollFactor(5); pager.setOffscreenPageLimit(4); pager.startAutoScroll(2000); pager.setOnPageClickListener(new AutoScrollViewPager.OnPageClickListener() { @Override public void onPageClick(AutoScrollViewPager autoScrollPager, int position) { if (toast != null) { toast.cancel(); } toast = Toast.makeText(getActivity(), "You clicked page: " + (position + 1), Toast.LENGTH_SHORT); toast.show(); } }); } }
第二个文件
public class TextFragment extends Fragment { private static final String ARG_PARAM1 = "param1"; private String mParam1; public static TextFragment newInstance(String param1) { TextFragment fragment = new TextFragment(); Bundle args = new Bundle(); args.putString(ARG_PARAM1, param1); fragment.setArguments(args); return fragment; } public TextFragment() { // Required empty public constructor } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getArguments() != null) { mParam1 = getArguments().getString(ARG_PARAM1); } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_text, container, false); } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); TextView tv = (TextView) getView().findViewById(R.id.text); tv.setText(mParam1); } }
3.在需要展示的页面写入如下代码
public class MyActivity extends AppCompatActivity { private ViewPager contentPager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my); ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this).build(); ImageLoader.getInstance().init(configuration); contentPager = findViewById(R.id.pager); contentPager.setOffscreenPageLimit(2); contentPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) { @Override public Fragment getItem(int i) { if (i == 0) { return new AutoScrollPagerFragment(); } return TextFragment.newInstance("Fragment " + i); } @Override public int getCount() { return 3; } }); } }
Demo下载使用地址:https://download.csdn.net/download/as425017946/10665034
ps: 启动ViewPager自动滚动
startAutoScroll() 启动自动滚动
stopAutoScroll() 停止自动滚动
设置
setInterval(long) 设置自动滚动的间隔时间,单位为毫秒
setDirection(int) 设置自动滚动的方向,默认向右
setCycle(boolean) 是否自动循环轮播,默认为true
setScrollDurationFactor(double) 设置ViewPager滑动动画间隔时间的倍率,达到减慢动画或改变动画速度的效果
setStopScrollWhenTouch(boolean) 当手指碰到ViewPager时是否停止自动滚动,默认为true
setSlideBorderMode(int) 滑动到第一个或最后一个Item的处理方式,支持没有任何操作、轮播以及传递到父View三种模式
setBorderAnimation(boolean) 设置循环滚动时滑动到从边缘滚动到下一个是否需要动画,默认为true