zoukankan      html  css  js  c++  java
  • Android之实现ViewPager+Fragment左右滑动

    近期看新闻发现新闻的页面是能够左右滑动的。于是自己就好奇起来了,之前做过ViewPager展示图片,在想怎么载入页面呢?研究了一下。发现就是加入了Fragment,废话不多说,揭秘奥秘的时候到了。
    使用过ViewPager小伙伴们都知道,Viewpager载入数据。须要数据源,这里我们定义4个Fragment。

    为了方便其它同事使用,我给这4个Fragment加入了一个基类。详细代码例如以下:

      public abstract class BaseFragment extends Fragment {
        public Context mContext;//上下文
        private View mView;
    
        @Override
        public void onActivityCreated(Bundle savedInstanceState) {
            super.onActivityCreated(savedInstanceState);
            initData(savedInstanceState);
        }
    
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            mContext = getActivity();
            super.onCreate(savedInstanceState);
        }
    
        @Override
        public View onCreateView(LayoutInflater inflater, 
        ViewGroup container,Bundle savedInstanceState) {
            mView = initView(inflater);
            return mView;
        }
        /**
         * 初始化界面
         */
    
        public abstract View initView(LayoutInflater inflater);
    
        /**
         * 初始化数据
         */
        public abstract void initData(Bundle savedInstanceState);
    
    
    }  

    里面我加入了2个方法,一个是初始化界面。一个初始化数据,这样其它Fragment继承该类实现其两种方法,我们看一下当中一个Fragment里面的代码:

    public class WeiFragment extends BaseFragment {
    
        @Override
        public View initView(LayoutInflater inflater) {
            //加入页面布局
            View view = inflater.inflate(R.layout.fragment_weixin, null);
    
            return view;
        }
    
        @Override
        public void initData(Bundle savedInstanceState) {
    
    
        }
    
    }
    

    这样其它同事就知道该怎样处理数据了。在主页面。我们仅仅要做两件事。一是把数据给Viewpager,还有一件事则是要使以下的tab能够控制页面变化。以下是传递数据的代码:

         //加入数据
         list = new ArrayList<BaseFragment>();
         list.add(new WeChatFragment());
         list.add(new FriendFragment());
         list.add(new AddressFragment());
         list.add(new SettingFragment());

    然后我们须要给ViewPager绑定一个适配器。针对Fragment的adapter,Google提供了专用的FragmentPagerAdapter。详细代码例如以下:

    public class FragmentAdapter extends FragmentPagerAdapter {
        private List<BaseFragment> list;
    
        public FragmentAdapter(FragmentManager fm,      
                         List<BaseFragment> list) {
            super(fm);
            this.list = list;
        }
    
        //得到数据
        @Override
        public Fragment getItem(int position) {
            return list.get(position);
        }
    
        @Override
        public int getCount() {
            return list.size();
        }
    }

    最后我们要把适配器绑定到ViewPager上面;

       //绑定适配器
       adapter = new FragmentAdapter(getFragmentManager(), list);
       mViewPager.setAdapter(adapter);

    第二件事就是处理tab改变页面变化。这里我们给tab设置了编号,依据编号来处理tab显示页面的问题,这里就不贴代码了,详细请看demo。
    效果图例如以下:
    这里写图片描写叙述

    项目源代码
    如有疑问,能够给我留言。多多交流。谢谢!

  • 相关阅读:
    HDU 1850 Being a Good Boy in Spring Festival
    UESTC 1080 空心矩阵
    HDU 2491 Priest John's Busiest Day
    UVALive 6181
    ZOJ 2674 Strange Limit
    UVA 12532 Interval Product
    UESTC 1237 质因子分解
    UESTC 1014 Shot
    xe5 android listbox的 TMetropolisUIListBoxItem
    xe5 android tts(Text To Speech)
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/7121876.html
Copyright © 2011-2022 走看看