ViewPager處理滑動詳解(一)

2021-07-11 11:11:17 字數 2611 閱讀 6327

摘自:

viewpager是乙個常用的android元件,不過通常我們使用viewpager的時候不能實現左右無限迴圈滑動,在滑到邊界的時候會看到乙個不能翻頁的動畫,可能影響使用者體驗。此外,某些區域性的viewpager(例如展示廣告或者公告之類的viewpager),可能需要自動輪播的效果,即使用者在不用滑動的情況下就能夠看到其他頁面的資訊。

為此我查閱了網路上現有的一些關於實現這樣效果的例子,但都不是很滿意,經過反覆實驗,在這裡總結並分享給大家,希望能有所幫助。

迴圈滑動效果的實現:pageradapter

我們知道viewpager自帶的滑動效果非常出色,因此我們基本不需要處理這個滑動,只處理內容的顯示。而內容的顯示是由adapter控制的,因此這裡重點就是這個adapter了。為簡單起見,本例的每個view直接是一張。下面是adapter的**:

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

privateclassimageadapterextendspageradapter

@override

publicintgetcount()

@override

publicbooleanisviewfromobject(view arg0, object arg1)

@override

publicvoiddestroyitem(viewgroup container,intposition,

object object)

@override

publicobject instantiateitem(viewgroup container,intposition)

imageview view = viewlist.get(position);

//如果view已經在之前新增到了乙個父元件,則必須先remove,否則會丟擲illegalstateexception。

viewparent vp =view.getparent();

if(vp!=null)

container.addview(view);

//add listeners here if necessary

returnview;

}

}

這裡有幾個地方需要注意:

viewpager滑動不順暢

viewpager放在scrollview中時,滑動viewpager裡的內容會不順暢,原因是稍微有點上下的動作就會被scrollview截去了,為了解決這個問題,重寫了scrollview裡的方法,順利解決。也就是重寫onintercepttouchevent方法,定義方法判斷viewpager上...

禁止ViewPager左右滑動

有時候我們需要禁止掉viewpager的左右滑動,怎麼做呢,一般是自定viewpager。然後覆蓋viewpager的onintercepttouchevent motionevent arg0 方法和ontouchevent motionevent arg0 方法,這兩個方法的返回值都是boole...

禁止滑動的ViewPager

viewpager非常好用,但有時候需要在viewpager的裡面再嵌入viewpager,那麼就有衝突了,簡單粗暴的方法就是直接把乙個viewpager禁止滑動。注意 禁止滑動的同時不能禁止 setcurrentitem 方法。實現思路 重寫viewpager,覆蓋 ontouchevent 和 ...