Comments (9)
关于第一个问题大概看了一下。因为没用过epoxy这个库,所以不太了解它的工作原理。但是刚才调试时候发现不管shouldSaveViewState返回true还是false,BannerViewPager都会被重新初始化(BannerModel的bind方法被调用),猜测唯一不同的地方就是返回true时会保存下BannerViewPager的状态,而返回false时不会保存。在保存了状态的情况下,BannerViewPager划出屏幕再化回来OnPageSelected会被调用两次,第一次position是正确的,第二次position是0(也就是saveState保存的状态是0,不知道它是根据什么保存的,或许就没保存...),BannerViewPager拿到position后会去通过BannerUtils.getRealPosition(isCanLoop(), position, mList.size())变换一下position,就成了2,所以就出现了你说的选中了最后一个的问题。但是具体epoxy是怎么去saveState的,为什么会保存position为0这个不太清楚,具体得看那个库是怎么实现的了。
当shouldSaveViewState返回false时状态不会被保存,但是每次都会重新初始化BannerViewPager,所以每次划出去再划回来就会重新从0开始。不过这个貌似也无解啊,毕竟每次都会重新创建。。
from bannerviewpager.
这个问题我可以改下BannerViewPager来兼容一下epoxy,但是并不能证明这个bug是BannerViewPager的。这个优化应该会在下个版本2.5.1发。
from bannerviewpager.
1.BannerViewPager目前确实没有考虑被回收的情况。这个问题在后续版本可以优化。
2.针对每个item控制展示时间?这个需求确实挺奇葩的..可以尝试下setPageChangeListener,然后根据position设置duration?
from bannerviewpager.
问下你现在用的是哪个版本?
from bannerviewpager.
问下你现在用的是哪个版本?
最新版本的,上边demo就是在你demo添加了第4个底部tab,和epoxy一块儿使用,内容和homeFragment一样
from bannerviewpager.
我拉你代码看下吧,debug包装不了。
from bannerviewpager.
2.针对每个item控制展示时间?这个需求确实挺奇葩的..可以尝试下setPageChangeListener,然后根据position设置duration?
大佬,按你说的可以设置每个item的展示时间了
@Override
public void onPageSelected(int position) {
super.onPageSelected(position);
Timber.d("当前position:%d", position);
long time = adverts.get(position).getTime() * 1000;
Timber.d("当前item的理论时间:%d", time);
bannerViewPager.setInterval((int) time);
}
from bannerviewpager.
一直没更新,今天试了试3.x最新版的 , 在epoxy中使用,保存banner的View State,可以记住banner的滑动位置,会从最后一个item开始显示,demo tab5
from bannerviewpager.
一直没更新,今天试了试3.x最新版的 , 在epoxy中使用,保存banner的View State,可以记住banner的滑动位置,会从最后一个item开始显示,demo tab5
Epoxy会在创建ViewHolder的时候先对状态进行保存,此时BVP还没有create,由于BVP当前版本中使用的是ViewPager2,而由于Epoxy初始化时状态保存会触发ViewPager2保存状态,也就是把currentItem=0保存了下来。当BVP调用了create,并设置currentItem=MAX_VALUE/2后,ViewPager2又进行了状态恢复将BVP的currentItem重置为了0。所以会出现这样的问题,目前看来没有太好的解决办法。。
from bannerviewpager.
Related Issues (20)
- 垂直指示器位置 HOT 1
- Recycleview 嵌套 Banner 回收
- 切换一下多语言阿拉伯文,控件之间的距离变大了 HOT 3
- 能否提供api,指定切换到上一页和下一页 HOT 2
- 同一个viewpager页面多次调用stopLoop和startLoop会导致onPageSelected回调两次 HOT 1
- 如果我想 向右 或 向左 自动滑动呢,请问有方法吗 HOT 1
- image set scalType,ui error
- 请问下怎么调整抖音模式下的视频比例 HOT 1
- 能否垂直滚动呢?
- multi_page_scale 模式 添加数据后Scale位置错乱 HOT 1
- 禁止循环之后,有办法让最后一张图贴边滑动不了吗? HOT 1
- 没法扫码下载apk了 HOT 1
- 有些属性在API文档上找不到 HOT 1
- Banner手动滚动单个ItemView一定距离,当前手停止不动,触摸不松开,切换到另一个页面,在切换回来,ItemView会卡着两个ItemView之间,不回回弹初始位置 HOT 2
- 闪退 HOT 1
- 请问一下图片和视频轮播出现问题。
- 在onresume时回调的生命周期没有判定,造成暂停的轮播图没法恢复滚动
- 动态设置指示器可见性没有生效
- refreshData方法在android6.0上无法显示banner
- refreshData会卡一下
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from bannerviewpager.