9、Dp Notes底部导航栏

本文介绍如何将ViewPager与QEndBar组件结合使用,实现点击图标切换ViewPager页面及滑动时图标状态变化的功能。详细解释了如何通过监听器OnPageChangeListener来更新QEndBar的状态,确保用户体验流畅。
摘要由CSDN通过智能技术生成
[size=medium] 将ViewPager和QEndBar结合起来,点击图标时切换ViewPager页面,ViewPager滑动时改变图标状态。打开QEndBar.java,定义ViewPager对象viewPager,新建一个函数setViewPager():[/size]
public void setViewPager(ViewPager viewPager){
if(this.viewPager!=null){
this.viewPager.setOnPageChangeListener(null);
}
this.viewPager=viewPager;
this.viewPager.setOnPageChangeListener(new On…Listener() {

@Override
public void onPageSelected(int position) {
// TODO Auto-generated method stub
}

@Override
public void onPageScrolled(……) {
// TODO Auto-generated method stub
}

@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
});
}

[size=medium]传进来一个ViewPager对象,为它设置一个监听器OnPageChangeListener,提示方法过时了,但没找到代替的,暂时用着。两个方法onPageSelected,页面选择,参数position选择的第几页,此函数中实现选择不同页面时,QEndBar图标的变化:[/size]
if(position>=0&&position<=3){
alphaItem[position]=255;
if(position==0){
alphaItem[1]=0;
alphaItem[2]=0;
alphaItem[3]=0;
}
else if(position==1){
alphaItem[0]=0;
alphaItem[2]=0;
alphaItem[3]=0;
}
else if(position==2){
alphaItem[0]=0;
alphaItem[1]=0;
alphaItem[3]=0;
}
else{
alphaItem[0]=0;
alphaItem[1]=0;
alphaItem[2]=0;
}
postInvalidate();
}

[size=medium] 将选中页的Alpha值设为255,其他为0,刷新。MainActivity.java中定义QEndBar对象qeb_main,从xml中获取为对象初始化,不多说,在ViewPager对象vp_main初始化后(从xml中引入,设置Adapter后),调用qeb_main.setViewPager(vp_main);(刚定义的方法),保存运行。[/size]
[img]http://dl2.iteye.com/upload/attachment/0124/2480/13a8845e-765e-384e-9b30-aff99275880d.gif[/img]
[color=gray][size=medium]注:这是一个.gif动图,ctrl点击图片查看。[/size][/color]

[size=medium] 点击图标ViewPager并不随更换页面,在onTouchEvent中改变图标状态的地方加入:[/size]
if(viewPager!=null){
viewPager.setCurrentItem(X,false);
}

[size=medium] X为页数,false无ViewPager滑动动画(可以试试true),为了观察页面变化,复制fragment_home.xml,三份分别为fragment_list,fragment_message,fragment_user,并修改其中的TextView显示:主页,列表,消息,用户。复制HomeFragment.java,三份分别为ListFragment,MessageFragment,UserFragment,并修改其中要引入的布局一一对应,保存。MainActivity中FragmentPagerAdapter中,getItem修改:[/size]
if(position==0){
return new HomeFragment();
}
else if(position==1){
return new ListFragment();
}
else if(position==2){
return new MessageFragment();
}
else if(position==3){
return new UserFragment();
}
return new HomeFragment();

[size=medium] ListFragment名字和其他包有重的,别导错。运行。[/size]
[img]http://dl2.iteye.com/upload/attachment/0124/2482/93b7de6f-910a-3eec-9000-a87d8bfaea5d.gif[/img]
[color=gray][size=medium]注:这是一个.gif动图,ctrl点击图片查看。[/size][/color]

[align=right][size=medium]持之以恒——2016/10/27[/size][/align]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值