您的位置:首页 > 其它

ViewPager切换滑动速度修改

2014-06-13 20:28 337 查看
ViewPager的setCurrentItem 滑动速度是写死地

下面的方法可以修改,在此以做记录

01
public
class
FixedSpeedScroller
extends

Scroller {
02
private

int
mDuration =

1500
;
03
04
public

FixedSpeedScroller(Context context) {
05
super
(context);
06
}
07
08
public

FixedSpeedScroller(Context context, Interpolator interpolator) {
09
super
(context, interpolator);
10
}
11
12
@Override
13
public

void
startScroll(
int

startX,
int
startY,
int
dx,
int
dy,

int
duration) {
14
// Ignore received duration, use fixed one instead
15
super
.startScroll(startX,startY, dx, dy,mDuration);
16
}
17
18
@Override
19
public

void
startScroll(
int

startX,
int
startY,
int
dx,
int
dy) {
20
// Ignore received duration, use fixed one instead
21
super
.startScroll(startX,startY, dx, dy,mDuration);
22
}
23
24
public

void
setmDuration(
int

time) {
25
mDuration =time;
26
}
27
28
public

int
getmDuration() {
29
return

mDuration;
30
}
31
}
使用方法:

01
try
{
02
Field field = ViewPager.
class
.getDeclaredField(
"mScroller"
);
03
field.setAccessible(
true
);
04
FixedSpeedScrollerscroller =
new
FixedSpeedScroller(mViewPager.getContext(),
05
new

AccelerateInterpolator());
06
field.set(mViewPager, scroller);
07
scroller.setmDuration(
2000
);
08
}
catch
(Exception e) {
09
LogUtils.e(TAG,
""
, e);
10
}
注意点:

PagerAdapter 的
destroyItem 每次会删除上一个页面,导致,如果做自动切换页面时会看不到动画
.

解决办法:

destoryItem中不做删除view,instantiateItem中对view是否有parent做为判断条件,这种情况适用于,少量的固定的子View,比如一个Banner,banner中做自动循环播放
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: