xiwenhec / Banner

android广告轮播控件

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

快速滑动导致的卡死

FTExplore opened this issue · comments

在部分手机上,同方向快速滑动,会导致banner卡住,必现(小米note)
目前的解决方案是降低banner的滑动速度,目测150毫秒就没有卡顿了

commented

你好,出现的卡顿现象,是因为,当页面滚动到最后一个条目边缘映射(映射的第一个条目)完成时,控件会瞬间设置到真实的第一个条目,因为映射的条目并不是真正意义上的viewpager中的一部分,此时不响应手指触摸连续事件。

if (state == ViewPager.SCROLL_STATE_IDLE && (position == 0 || position == mAdapter.getCount() - 1)) {
setCurrentItem(realPosition, false);
}
是这段代码吧,瞬间设置真实的第一个条目,或者最后一个条目,但是卡顿的现象发生在真实第一个条目与真实第二个条目之间。此时instantItem 被调用了三次

commented

你好,重新查阅了代码,并没有发现卡死现象,当app:banner_pageChangeDuration设置比较大时,手指快速滑动,会出现卡顿的假象,这个现象的原因是因为,当个页面没有切换完成,不会快速响应下一个页面,建议将这个参数设置到500以下,对于instantItem 被调用了三次,这个问题是正常的,这个是viewPager的预加载模式,当滑动到最后一个映射条目时然后切换到真实的第一个条目时,此时有三个条目需要生成,一个是本身的条目,一个是第二个条目,还有一个是映射的最后一个条目。

嗯嗯,我最近也在想,有没有办法可以在app:banner_pageChangeDuration 比较大的时候,也能顺畅

commented

最近看到了一个不错的方案,正在考虑试一下,看看能不能解决,同样,我觉得这个写法的定制行不够好,具备将banner的布局id自定义传递进去,使用ViewHolder的**,重写一下,欢迎多提提建议。