Android ViewPager无限循环滑动并可自动滚动完整实例

对于ViewPager 广告页这个功能很多APP都有这个功能在网上也看过一些资料,我就在这把我自己完整的实现方法写出来吧

基础的ViewPager:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

  android:layout_width="match_parent"

  android:layout_height="match_parent"

  android:id="@+id/top_item"

  android:orientation="vertical">

 

    <android.support.v4.view.ViewPager

      android:layout_width="match_parent"

      android:layout_height="180dp"

      android:id="@+id/top_vp"

 

      ></android.support.v4.view.ViewPager>

 

</LinearLayout>

很简单 仅仅是一个ViewPager 

接下来简单的设置一下ViewPager的Adapter 添加ImageView

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

public class MainActivity extends AppCompatActivity {

 

  private ViewPager topVp;

  private int[]images = new int[]{R.mipmap.ad0, R.mipmap.ad1, R.mipmap.ad3}; //模拟存放要展示的图片

  private List<ImageView> imageViews ;

  @Override

  protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    initImageViews();

    initVp();

  }

 

  /**

   * 初始化图片资源

   */

  private void initImageViews() {

    imageViews = new ArrayList<>();

    for(int i = 0;i<images.length;i++){

      ImageView imageView = new ImageView(this);

      imageView.setScaleType(ImageView.ScaleType.FIT_XY);

      imageView.setImageResource(images[i]);

      imageViews.add(imageView);

    }

  }

 

  private void initVp() {

 

    topVp = (ViewPager) findViewById(R.id.top_vp);

    topVp.setAdapter(new PagerAdapter() {

      @Override

      public int getCount() {

        return imageViews.size();

      }

 

      @Override

      public boolean isViewFromObject(View view, Object object) {

        return view==object;

      }

 

      @Override

      public void destroyItem(ViewGroup container, int position, Object object) {

        container.removeView(imageViews.get(position));

      }

 

      @Override

      public Object instantiateItem(ViewGroup container, int position) {

        container.addView(imageViews.get(position));

        return imageViews.get(position);

      }

    });

  }

 

}

上述是最基础的一个ViewPager 下面我们就在这个基础上改造就可以了

实现无限循环滑动:

这里我事先循环滑动的方式很简单 就是把 adapter的count 设置为一个很大的值 这样 让它滑不到头 然后切换图片 就可以实现 虽然方法比较LOW 但是效果还是可以的 

代码在基础的ViewPager下修改如下 :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38<

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值