博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android自定义组件系列【10】——随ViewPager滑动的导航条
阅读量:7143 次
发布时间:2019-06-28

本文共 1797 字,大约阅读时间需要 5 分钟。

昨天在用到ViewPager实现滑动导航的时候发现微信的导航条效果是跟随ViewPager的滑动而动的,刚开始想了一下,感觉可以使用动画实现,但是这个滑动是随手指时时变化的,貌似不可行,后来再网上搜了一下,找到一个开源代码,结果打开一看大吃一惊,这么简单的效果代码居然大概有300多行,太占手机存储空间了!后来自己干脆重写ViewGroup使用scrollTo方法实现了一下,具体实现过程如下:

package com.example.slideupdownviewpage;import android.content.Context;import android.support.v4.view.ViewPager;import android.support.v4.view.ViewPager.OnPageChangeListener;import android.util.AttributeSet;import android.view.ViewGroup;/** * http://blog.csdn.net/dawanganban * @author 阳光小强 * */public class ViewPagerTab extends ViewGroup{		private ViewPager mViewPager;	private PageListener mPageListener = new PageListener();	private int mWidth;	private int mHeight; 	public ViewPagerTab(Context context, AttributeSet attrs) {		super(context, attrs);		}		@Override	protected void onLayout(boolean changed, int l, int t, int r, int b) {		if(getChildCount() > 0){			getChildAt(0).layout(0, 0, mWidth / 3, mHeight);  		}	}		@Override	protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {		super.onMeasure(widthMeasureSpec, heightMeasureSpec);		mWidth = MeasureSpec.getSize(widthMeasureSpec);          mHeight = MeasureSpec.getSize(heightMeasureSpec); 	}		public void setViewPager(ViewPager viewPager){		this.mViewPager = viewPager;		mViewPager.setOnPageChangeListener(mPageListener);	}		private class PageListener implements OnPageChangeListener {		@Override		public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {			scrollTo(- position * mWidth / 3 - Math.round(positionOffset * mWidth / 3), 0);		}				@Override		public void onPageSelected(int position) {		}				@Override		public void onPageScrollStateChanged(int arg0) {		}	}}
效果如下:

完整源代码在GitHub地址:https://github.com/lxqxsyu/SlideUpDownViewPage

转载于:https://www.cnblogs.com/lanzhi/p/6468876.html

你可能感兴趣的文章
菜鸟学Linux命令:tail命令 查看日志
查看>>
对康爷PubSubHubbub教程的一些补充
查看>>
Target-Action回调模式
查看>>
【导入导出】数据泵 job_name参数的使用
查看>>
静态代码块,构造代码块,局部代码块演示
查看>>
Linux下防火墙iptables设置
查看>>
记一道有意思的算法题Rotate Image(旋转图像)
查看>>
activiti自定义流程之自定义表单(三):表单列表及预览和删除
查看>>
CYQ.Data 轻量数据访问层(一) 概述
查看>>
Android写的一个设置图片查看器,可以调整透明度
查看>>
Max Sum 杭电 1003
查看>>
Java 序列化笔记
查看>>
Cloudera Impala架构设计要点
查看>>
.NET平台开源项目速览(11)KwCombinatorics排列组合使用案例(1)
查看>>
用Qt开发第一个Hello World程序
查看>>
【SSH项目实战】国税协同平台-4.用户管理需求分析&CRUD方法1
查看>>
只需一步:创建oss bucket并控制访问权限
查看>>
array of arrays vs array of pointers
查看>>
IOS开发之NSPredicate 查询、搜索
查看>>
qsort
查看>>