zoukankan      html  css  js  c++  java
  • Android自定义组件系列【10】——随ViewPager滑动的导航条

    昨天在用到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



  • 相关阅读:
    Struts2操作request、session和application对象
    json工具性能比较:json-lib和jackson进行Java对象到json字符串序列化[转]
    Java中的内部接口
    Struts2.0 xml文件的配置(package,namespace,action)
    过滤器实用案例
    Struts2教程
    struts全包导入问题
    Maven构建项目速度太慢的解决办法 Maven 调试
    HBase之五:hbase的region分区
    HBase之二:Hbase优化
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6468876.html
Copyright © 2011-2022 走看看