学习安卓有一段时间了,想写点东西记录一下学习的过程。
现在的应用很多都用fragment和viewpage来对界面进行实现,于是我也想学习一下,下面是基本过程:
1.创建项目,在activity_main中写下如下代码
<android.support.v4.view.ViewPager
android:id="@+id/vp"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</android.support.v4.view.ViewPager>
2.在MainActivity中找到viewpage这个控件
vp = (ViewPager) findViewById(R.id.vp);
3.由于viewpage是用适配器填充的,所以只需要设置适配器即可,暂时先不管。
4.接下来就是对fragment的处理了
首先新建三个xml,这里为了方便,随便写了三个布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00ff00"
android:orientation="vertical" >
<TextView
android:id="@+id/tv1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="第一" />
</LinearLayout>
之后的两个布局差不多,只是背景颜色不同,便于区分。
然后在src目录中新建三个Fragment类,继承自Fragment并且实现onCreateView方法
public class Fragment1 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater,
@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
// TODO Auto-generated method stub
return inflater.inflate(R.layout.fragment1, null);
}
}
之后的两个类与此类似。
5.回到MainActivity中对适配器进行操作。
vp.setAdapter(adapter);
这里传的adapter是PagerAdapter,所以我们自定义一个类,注意要继承FragmentPagerAdapter,这样返回过来的才是Fragement,如果直接
写继承自
PagerAdapter,那么就会返回view,这并不是我们所需要的。
继承后我们发现这个类需要重写构造函数MyAdater(FragmentManager fm),这还不够,我们需要在里面添加一个参数List<Fragment> fragments.这样才能实现fragment的展示。
</pre><pre name="code" class="java">
private class MyAdater extends FragmentPagerAdapter {
List<Fragment> fragments;
public MyAdater(FragmentManager fm, List<Fragment> fragments) {
super(fm);
this.fragments = fragments;
// TODO Auto-generated constructor stub
}
@Override
public Fragment getItem(int position) {
// TODO Auto-generated method stub
return fragments.get(position);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return fragments.size();
}
}
6.在设置适配器时,传递两个参数分别是
List<Fragment> fragments = new ArrayList<Fragment>();
Fragment1 fragment1 = new Fragment1();
Fragment2 fragment2 = new Fragment2();
Fragment3 fragment3 = new Fragment3();
fragments.add(fragment1);
fragments.add(fragment2);
fragments.add(fragment3);
PagerAdapter adapter = new MyAdater(getSupportFragmentManager(),
fragments);
vp.setAdapter(adapter);
这样,就完成了viewpage+viewpage的简单实现