Android随VierPager滑动的导航栏
来源:互联网 发布:airbnb淘宝300优惠 编辑:程序博客网 时间:2024/06/05 05:55
Android项目开发中ViewPager加导航条的框架随处可见,但大部分都是点击之后实现背景的切换,如果想让导航条的背景也像viewPager那样滑动又该怎么做呢?先上一张效果图:
其实实现方法也很简单,接下来是代码部分:
viewPager.addOnPageChangeListener(new OnPageChangeListener() {@Overridepublic void onPageSelected(int possition) {currentIndex = possition;}@Overridepublic void onPageScrolled(int possition, float offset,int offsetPixels) {int gap = Math.abs(currentIndex - possition);if (gap >= 2) {return;}RelativeLayout.LayoutParams params = (LayoutParams) imageView.getLayoutParams();//int width = viewPager.getWidth();if (possition == currentIndex) {params.leftMargin = (int) (offset * (screenWidth * 1.0 / tabNum) + currentIndex* (screenWidth / tabNum));} else if (currentIndex > possition) {params.leftMargin = (int) (-(1 - offset)* (screenWidth * 1.0 / tabNum) + currentIndex* (screenWidth / tabNum));}imageView.setLayoutParams(params);}@Overridepublic void onPageScrollStateChanged(int state) {}});以上就是核心代码了。
接下来给大家解释一下:onPageScrolled方法参数
1、possition
假如当前页的id是index那么
向后滑的时候 possition=index,当滑倒后一页时possition变为index+1;
向前滑的时候 possition=index-1,滑动到前一页时possition认为index-1;
因此可以根据possition来判断viewPager是在想前滑还是在向后滑如果possition==index表示向后滑,possition<index表示viewPager向前滑
2、offset 当向后滑动的时候,offset从0-1,滑动完成后恢复为0
动作1:从pager1滑动到pager2 ,offset 0逐步到1,最后恢复为0
动作2:从pager1滑动但没有滑动到pager2放开后回到pager1,offset 0逐步到某个值a(0-1之间),再从a逐步恢复到0
offset 当向后滑动的时候,offset从1-0
动作1:从pager2滑动到pager1,offset 1逐步到0
动作2:从pager2滑动但没有滑动到pager1放开后回到pager2,offset 1逐步到某个值b(0-1之间),在从b逐步增加为1,最后恢复为0
3、offsetPixels 表示手指滑动的距离(相当于将offset*width width是viewPager的宽度 可以根据这个计算手指实际滑动的距离)
总的来说通过onPagerScrolled方法计算出导航栏对应的滑动距离,然后给导航栏的背景图片设置margin就可以了。
以下是要注意的一些问题:
int gap = Math.abs(currentIndex - possition);
if (gap >= 2) {
return;
}
2、注意计算自己项目中导航栏的宽度本例中等于屏幕的宽度,如果设置了padding或者margin一定要用,屏幕的宽度减掉padding和margin
参考文章:http://blog.csdn.net/a123demi/article/details/39480385#comments
源码地址:http://download.csdn.net/detail/z20113864/9578873
- Android随VierPager滑动的导航栏
- Android VierPager的工作原理
- Android 滑动标题导航栏
- android-仿美丽说有滑动效果的导航栏
- android-仿美丽说有滑动效果的导航栏
- android-仿美丽说有滑动效果的导航栏
- Android实现导航栏的左右滑动效果
- android-仿美丽说有滑动效果的导航栏
- android-仿美丽说有滑动效果的导航栏
- Android仿微信滑动导航栏的实现(上)
- Android仿微信滑动导航栏的实现(下)
- android viewpager+Imagerview的可滑动主界面导航栏
- android 可滑动、点击切换的导航栏
- Android自定义控件,可以滑动的导航栏(Navigation Bar)
- Android滑动导航菜单的快速构建
- Android滑动导航菜单的快速构建
- Android之ViewpagerIndicator滑动导航栏
- Android 滑动标题导航栏【转】
- android跨进程通信(IPC):使用AIDL
- Newtonsoft.Json(Json.Net)学习笔记
- 句子逆序
- struts2中redirect action的参数传递
- iOS学习之Socket使用简明教程- AsyncSocket
- Android随VierPager滑动的导航栏
- opencv人脸检测和跟踪
- cannot be read or is not a valid ZIP file
- Android 修改厂商信息
- 内存泄漏汇总
- 用jconsole监控tomcat线程
- composer入门教程--安装项目依赖(4)
- WebView
- LightOJ 1220 Mysterious Bacteria