Android实现顶部导航菜单左右滑动效果

2019-12-10 17:53:16刘景俊

另外,为了设置左右导航菜单中的图片,需要在ViewPager控件中的onPageSelected监听事件中更改图片状态:

 @Override 
 public void onPageSelected(int arg0) {
 int pageCount = menuViews.size() - 1;
 pagerIndex = arg0;
 
 // 显示右边导航图片
 if(arg0 >= 0 && arg0 < pageCount){
 imageNext.setVisibility(View.VISIBLE);
 }else{
 imageNext.setVisibility(View.INVISIBLE);
 }
 
 // 显示左边导航图片
 if(arg0 > 0 && arg0 <= pageCount){
 imagePrevious.setVisibility(View.VISIBLE);
 }else{
 imagePrevious.setVisibility(View.INVISIBLE);
 }
 } 

说明:如果有多个页面,则直接显示右边导航图片:

if(menuViews.size() > 1){ 
 imageNext.setVisibility(View.VISIBLE);
}

如果到达最后一页时,则隐藏右边导航图片;如果当前页不是第一页,则直接显示左边导航图片。
另外,还需要给这两个导航图片设置单击事件,在点击时直接显示下一页菜单或是上一页菜单: 

// 右导航图片按钮事件 
 class ImageNextOnclickListener implements OnClickListener{
 @Override
 public void onClick(View v) {
 // TODO Auto-generated method stub
 pagerIndex ++;
 viewPager.setCurrentItem(pagerIndex);
 }
 }
 
 // 左导航图片按钮事件
 class ImagePreviousOnclickListener implements OnClickListener{
 @Override
 public void onClick(View v) {
 // TODO Auto-generated method stub
 pagerIndex --;
 viewPager.setCurrentItem(pagerIndex);
 }
 }

到此,第一种解决方案大致思路和代码就已经完了,不过我这里的实现效果是在滑动时直接显示下一页菜单,本页菜单就给隐藏掉了。有的朋友可能注意到,要想实现一点一点向左滑动或是向右滑动,而不是整个页面的滑动,也就是如果没有滑到下一页会反弹到原来的那页,就不能用这个方法了,那么就需要用到HorizontalScrollView,关于HorizontalScrollView实现的滑动菜单使用及示例,请看下面的第二种解决方案。