ViewPager的最简单使用方法
好了,进入正题,今天教大家ViewPager的最简单的实例,首先我们需要几个Fragment,还有一个Activity,这大家应该知道的吧,因为Fragment需要在这个Activity中进行左右滑动,所以…
- 1.那么首先就来准备几个Fragment,给出其中一个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="#f00">
<TextView
android:layout_width="match_parent"
android:layout_height="160dp"
android:text="XX"
android:textSize="25dp"
android:gravity="center"
android:textColor="#160943"
android:background="#d2d2d2"/>
</LinearLayout>
再给出对应的Fragment的代码,Fragment是什么这个大家应该知道吧,其实就是一个一个加载界面的容器,好了,代码如下:
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
/**
* Created by Mr-x on 2016/12/07.
*/
public class Tab1 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.tab1, container, false);
}
}
好了,这样一个Fragment就弄好了,就是一个xml文件被一个集成Fragment的类加载了,不过要注意这里的Fragment,有两种,一个是继承android.support.v4.app.Fragment包的,一个继承android.app.Fragment包的,因为最后我们要在主Activity的使用,所以要注意对应。然后我们需要几个Fragment就做几个模仿上面就行,这就不写了。
接下来就是给出Activity的时候了,首先给出主界面布局:
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.support.v4.view.ViewPager
android:id="@+id/id_viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v4.view.ViewPager>
</LinearLayout>
很简单,就一个ViewPager,干什么用的呢,相当于一个容器,来加载布局的,哪些布局呢?就是上面的那些Fragment,但是具体的设置在Activity里面进行,下面给出主Activity代码:
注意这里的FragmentActivity,一定要这么写,否则等下下面的getSupportFramentManger会找不到
import java.util.ArrayList;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
public class MainActivity extends FragmentActivity
{
ArrayList<Fragment> arrayList;//用来盛装几个Fragment,等下放进Adapter里面进行适配
ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化一系列数据
initView();
}
private void initView()
{
viewPager = (ViewPager)findViewById(R.id.id_viewpager);
arrayList = new ArrayList<Fragment>();
Fragment xTab = new Tab1();
Fragment yTab = new Tab2();
Fragment zTab = new Tab3();
arrayList.add(xTab);
arrayList.add(yTab);
arrayList.add(zTab);
FragmentPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager(), arrayList);
viewPager.setAdapter(adapter);//这里进行设置适配器,为了添加前面创建的那几个Fragment到ViewPager里面去,这样的话就可以实现左右滑动了
}
//这是一个新型的适配器,有个好处就是加载快,具体原因不解释了,是缓存的问题
private class ViewPagerAdapter extends FragmentPagerAdapter
{
private ArrayList<Fragment> marrayList;
public ViewPagerAdapter(FragmentManager fm, ArrayList<Fragment> arrayList)
{
super(fm);
marrayList = arrayList;
}
//下面这两个函数是必须在这个适配器里面写的,不难,很容易看出来是干什么用的
@Override
public Fragment getItem(int position)
{
return marrayList.get(position);
}
@Override
public int getCount()
{
return marrayList.size();
}
}
}
最后再补充一下,如果想手动调用显示的是第几个Fragment,直接调用下面这个函数即可:
viewPager.setCurrenItem(position);
和之前的相比,这里的代码貌似多了一点,但是没办法了,这是最最简便的了,大家耐心看吧,上面的注释已经做的很详细了。
好了,最终的实现已经完成了,给出效果图