返回信息流搜了搜谷歌,推荐使用addOnPageChangeListener
这样确实可以监控viewpager的滑动事件,但是我发现,加上这个之后,页面的滑动特别顿,基本滑动失效了。
如果我把滑动监控取消掉,页面的滑动挺顺畅的,请问这个问题该如何解决?
这是一条镜像帖。来源:北邮人论坛 / mobile-terminal-at / #32331同步于 2016/10/10
该镜像源已超过 30 天没有更新,可能在源站已被删除。
MobileTerminalAT机器人发帖
求问,Viewpager的setOnPageChangeListener被弃用了
nijian81
2016/10/10镜像同步16 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 nijian81 的大作中提到: 】
: 搜了搜谷歌,推荐使用addOnPageChangeListener
: 这样确实可以监控viewpager的滑动事件,但是我发现,加上这个之后,页面的滑动特别顿,基本滑动失效了。
: 如果我把滑动监控取消掉,页面的滑动挺顺畅的,请问这个问题该如何解决?
感觉set变add是为了开放给开发者可以添加多个监听。 比如基类里面添加了监听, 子类如果用set会覆盖掉基类的监听。add 使用起来方便了许多。 至于卡顿不祥,不应该吧。看是不是监听里面有啥耗时操作呢。
【 在 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栏状态跟着改变,感觉不是耗时代码
你写的这个不叫耗时我就不知道什么是耗时了
重载中有三个方法,你确定要用onPageScrolled?
你每移动一个像素都要调用里面的代码一次,而你需要的是page设置好了以后的position
【 在 nijian81 的大作中提到: 】
: viewPaper.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
: @Override
: public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
: ...................
【 在 icyfox 的大作中提到: 】
: 你写的这个不叫耗时我就不知道什么是耗时了
: 重载中有三个方法,你确定要用onPageScrolled?
: 你每移动一个像素都要调用里面的代码一次,而你需要的是page设置好了以后的position
嗯嗯,你说的对。
我找到问题所在了,是因为这句代码是重复操作的: viewPaper.setCurrentItem(0, true);
我觉得是滑动的时候,viewpager会自动定位,如果我手动设置setCurrentItem的话是多此一举,把这句话去掉就ok了,滑动也正常了。
另外,我这里设置image和text的颜色,是想通过监听position改变底部导航栏的状态,比如我滑动到第二个位置时,让底部第二个button设置为选中状态,其他置灰。
你没看懂我的意思
你应该选择onPageSelect 而不是 onPageScrolled
【 在 nijian81 的大作中提到: 】
: 嗯嗯,你说的对。
: 我找到问题所在了,是因为这句代码是重复操作的: viewPaper.setCurrentItem(0, true);
: 我觉得是滑动的时候,viewpager会自动定位,如果我手动设置setCurrentItem的话是多此一举,把这句话去掉就ok了,滑动也正常了。
: ...................
牛逼
【 在 icyfox 的大作中提到: 】
: 你没看懂我的意思
: 你应该选择onPageSelect 而不是 onPageScrolled