首先,肯定是创建好main_activity的布局文件
整个布局就是一个LinearLayout,在LinearLayout中要用一个ViewPager(ViewPager必须写全称android.support.v4.view.ViewPager)
代码如下:
然后,想实现的是滑动换屏,当然要是多屏了的,所以不用想就知道肯定要有多个fragment了。
插播一下fragment与Activity的关系:fragment英文意思是片段,也就是说fragment是Activity的片段 ,一个Activity可以有多个片段——fragment,所以我们想实现一个Activity的滑动换屏就要有多个fragment,并借助ViewPager滑动切换效果来实现了
既然想用多个fragment,就需要多个fragment布局嘛,所以接下来,就在写两个(想要几个切换就要几个布局)期望的布局啦,分别是(/res/layout/layout1.xml)和(/res/layout/layout2.xml)。
/res/layout/layout1.xml
/res/layout/layout2.xml
现在有了布局,下面肯定是需要把他们联系在一起了。
所以给fragment准备一下,生成Fragment1和Fragment2两个类来拓展(extends)Fragment。这里就只写一个了
代码如下:
public class Fragment1 extends Fragment { private View layout = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { /*下面的代码不行就记住,正像生成自定义控件那样 *LayoutInflater.from(context).inflate(R.layout., this); *这样写就可以了 *我也是新手,哈哈 **/ this.layout = inflater.inflate(R.layout.layout1, null); //从这里到return之间,你可以为这个Fragment添加其功能。比如设置一些组件的功能 return this.layout; } }
写到这就觉得缺点什么,我的fragment都准备好了,可是准备好了似乎我没有用啊,所以接下来就是把这些准备好的东西用上了。
接下来这里有两步,第一步,当然这就像listView一样,生成一个适配器嘛。其实可以总结一下他们用适配器的共同特点,似乎就是有了多个元素,且每一个元素都要对号入座的时候就要适配一下。第二步,就是有了适配器,肯定是在MainActivity这个类中要给ViewPager加上啊!本来这两步可以在一个源文件中做,但是咱是java啊,就封装一下,尽量下次再用嘛。
那么代码如下:
public class FragmentAdapter extends FragmentPagerAdapter{ //这个是存放两个Fragment的数组及包含Fragment1、Fragment2,要从MainActivity中传过来 private ArrayListfragmentArray; //自己添加一个构造函数从MainActivity中接收这个Fragment数组, public FragmentAdapter(FragmentManager fm, ArrayList fragmentArray) { //调用自己的含有一个参数的构造函数 this(fm); //接收Fragment数组 this.fragmentArray = fragmentArray; } public FragmentAdapter(FragmentManager fm) { //调用父类的含有一个参数的构造函数,感觉this就是自己的一个引用,super就父类的一个引用 super(fm); } //这个函数的作用是当切换到第arg0个页面的时候调用。 @Override public Fragment getItem(int arg0) { return this.fragmentArray.get(arg0); } @Override public int getCount() { return this.fragmentArray.size(); } }
好的第一步完成,以后就可以直接拿来用了。
第二步开始:
public class MainActivity extends FragmentActivity { private ViewPager viewPager = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //在onCreate方法中调用自己写的函数 initViewPager(); } private void initViewPager() { //获取到ViewPager的实例 this.viewPager = (ViewPager)findViewById(R.id.viewpager); //构造好存放Fragment的数组 ArrayListfragmentArray = new ArrayList (); fragmentArray.add(new Fragment1()); fragmentArray.add(new Fragment2()); //为ViewPager设置适配器 viewPager.setAdapter(new FragmentAdapter(getSupportFragmentManager(), fragmentArray)); //设置当前显示的页面,Fragment1自然为0,Fragment2为1,这其实是fragmentArray中的索引的数 viewPager.setCurrentItem(0); } }
现在,就基本上实现了滑动换屏。
哈哈,今天是不是又是有点收获的愉快的一天呢?