Android ViewPager和Fragment实现仿微信导航界面及滑动效果


1 先看看实现的效果:

Android ViewPager和Fragment实现仿微信导航界面及滑动效果_第1张图片

ps:上面每一帧Fragment中,包含是来自网络的图片;

实现ViewPager+Fragment的页面滑动和底部导航原理

主布局文件如下:




    
        
    

    

    
        
        
        
        
    



MainActivity核心代码如下:

给FragmentList添加数据

mFragmentList.add(oneFragment); 

mFragmentList.add(twoFragment); 

mFragmentList.add(threeFragment); 

mFragmentList.add(fouthFragmen);

 
  

ViewPager的监听事件--滑动ViewPager的时候触发修改文本的操作

 mFragmentAdapter = new FragmentAdapter(this.getSupportFragmentManager(), mFragmentList);
        vp.setOffscreenPageLimit(4);//ViewPager的缓存为4帧
        vp.setAdapter(mFragmentAdapter);
        vp.setCurrentItem(0);//初始设置ViewPager选中第一帧
        item_weixin.setTextColor(Color.parseColor("#66CDAA"));

        //ViewPager的监听事件
        vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }
            @Override
            public void onPageSelected(int position) {
                /*此方法在页面被选中时调用*/
                title.setText(titles[position]);
                changeTextColor(position);
            }

            @Override
            public void onPageScrollStateChanged(int state) {
                /*此方法是在状态改变的时候调用,其中arg0这个参数有三种状态(0,1,2)。
                arg0 ==1的时辰默示正在滑动,
                arg0==2的时辰默示滑动完毕了,
                arg0==0的时辰默示什么都没做。*/
            }
        });

点击底部Text 动态修改ViewPager的内容


 /**点击底部Text 动态修改ViewPager的内容,底部是采用4个textView,当然也可以使用RadioButton,*/
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.item_weixin:
                vp.setCurrentItem(0, true);
                break;
            case R.id.item_tongxunlu:
                vp.setCurrentItem(1, true);
                break;
            case R.id.item_faxian:
                vp.setCurrentItem(2, true);
                break;
            case R.id.item_me:
                vp.setCurrentItem(3, true);
                break;
        }
    }


FragmentAdapter


 public class FragmentAdapter extends FragmentPagerAdapter {

        List fragmentList = new ArrayList();
        public FragmentAdapter(FragmentManager fm,List fragmentList) {
            super(fm);
            this.fragmentList = fragmentList;
        }

        @Override
        public Fragment getItem(int position) {
            return fragmentList.get(position);
        }

        @Override
        public int getCount() {
            return fragmentList.size();
        }

    }

       源码下载


你可能感兴趣的:(Android,基础)