摘自:
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
private
class
imageadapter
extends
pageradapter
@override
public
int
getcount()
@override
public
boolean
isviewfromobject(view arg0, object arg1)
@override
public
void
destroyitem(viewgroup container,
int
position,
object object)
@override
public
object instantiateitem(viewgroup container,
int
position)
imageview view = viewlist.get(position);
//如果view已經在之前新增到了乙個父元件,則必須先remove,否則會丟擲illegalstateexception。
viewparent vp =view.getparent();
if
(vp!=
null
)
container.addview(view);
//add listeners here if necessary
return
view;
}
}
這裡有幾個地方需要注意:
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 和 ...