BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / mobile-terminal-at / #32331同步于 2016/10/10
该镜像源已超过 30 天没有更新,可能在源站已被删除。
MobileTerminalAT机器人发帖

求问,Viewpager的setOnPageChangeListener被弃用了

nijian81
2016/10/10镜像同步16 回复
搜了搜谷歌,推荐使用addOnPageChangeListener 这样确实可以监控viewpager的滑动事件,但是我发现,加上这个之后,页面的滑动特别顿,基本滑动失效了。 如果我把滑动监控取消掉,页面的滑动挺顺畅的,请问这个问题该如何解决?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
icyfox机器人#1 · 2016/10/10
你在listener里写的代码特耗时吧
ccyingzi2009机器人#2 · 2016/10/11
【 在 nijian81 的大作中提到: 】 : 搜了搜谷歌,推荐使用addOnPageChangeListener : 这样确实可以监控viewpager的滑动事件,但是我发现,加上这个之后,页面的滑动特别顿,基本滑动失效了。 : 如果我把滑动监控取消掉,页面的滑动挺顺畅的,请问这个问题该如何解决? 感觉set变add是为了开放给开发者可以添加多个监听。 比如基类里面添加了监听, 子类如果用set会覆盖掉基类的监听。add 使用起来方便了许多。 至于卡顿不祥,不应该吧。看是不是监听里面有啥耗时操作呢。
axpq110机器人#3 · 2016/10/11
support 里有了 LinearSnapHelper 之后,就开始酝酿改用 RecyclerView 咯
nijian81机器人#4 · 2016/10/11
【 在 icyfox 的大作中提到: 】 : 你在listener里写的代码特耗时吧 viewPaper.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { switch (position){ case 0: viewPaper.setCurrentItem(0, false); home_image.setImageResource(R.mipmap.library_xz); user_image.setImageResource(R.mipmap.me); vip_image.setImageResource(R.mipmap.me); home_text.setTextColor(Color.rgb(69, 192, 26)); user_text.setTextColor(Color.rgb(153, 153, 153)); vip_text.setTextColor(Color.rgb(153, 153, 153)); break; case 1: viewPaper.setCurrentItem(1, false); home_image.setImageResource(R.mipmap.library); user_image.setImageResource(R.mipmap.me_xz); vip_image.setImageResource(R.mipmap.me); home_text.setTextColor(Color.rgb(153, 153, 153)); user_text.setTextColor(Color.rgb(69, 192, 26)); vip_text.setTextColor(Color.rgb(153, 153, 153)); break; case 2: viewPaper.setCurrentItem(2, false); home_image.setImageResource(R.mipmap.library); user_image.setImageResource(R.mipmap.me); vip_image.setImageResource(R.mipmap.me_xz); home_text.setTextColor(Color.rgb(153, 153, 153)); user_text.setTextColor(Color.rgb(153, 153, 153)); vip_text.setTextColor(Color.rgb(69, 192, 26)); break; } } @Override public void onPageSelected(int position) { } @Override public void onPageScrollStateChanged(int state) { } }); 我就是想让随着viewpager的滑动,底部的button栏状态跟着改变,感觉不是耗时代码
icyfox机器人#5 · 2016/10/11
你写的这个不叫耗时我就不知道什么是耗时了 重载中有三个方法,你确定要用onPageScrolled? 你每移动一个像素都要调用里面的代码一次,而你需要的是page设置好了以后的position 【 在 nijian81 的大作中提到: 】 : viewPaper.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { : @Override : public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { : ...................
nijian81机器人#6 · 2016/10/11
【 在 icyfox 的大作中提到: 】 : 你写的这个不叫耗时我就不知道什么是耗时了 : 重载中有三个方法,你确定要用onPageScrolled? : 你每移动一个像素都要调用里面的代码一次,而你需要的是page设置好了以后的position 嗯嗯,你说的对。 我找到问题所在了,是因为这句代码是重复操作的: viewPaper.setCurrentItem(0, true); 我觉得是滑动的时候,viewpager会自动定位,如果我手动设置setCurrentItem的话是多此一举,把这句话去掉就ok了,滑动也正常了。 另外,我这里设置image和text的颜色,是想通过监听position改变底部导航栏的状态,比如我滑动到第二个位置时,让底部第二个button设置为选中状态,其他置灰。
icyfox机器人#7 · 2016/10/11
你没看懂我的意思 你应该选择onPageSelect 而不是 onPageScrolled 【 在 nijian81 的大作中提到: 】 : 嗯嗯,你说的对。 : 我找到问题所在了,是因为这句代码是重复操作的: viewPaper.setCurrentItem(0, true); : 我觉得是滑动的时候,viewpager会自动定位,如果我手动设置setCurrentItem的话是多此一举,把这句话去掉就ok了,滑动也正常了。 : ...................
ccyingzi2009机器人#8 · 2016/10/11
牛逼 【 在 icyfox 的大作中提到: 】 : 你没看懂我的意思 : 你应该选择onPageSelect 而不是 onPageScrolled
lixing机器人#9 · 2016/10/11
你监听的方法里,应该用onPageSelected(),而不是在onPageScrolled()改变UI状态,LSS是这个意思。