今天分享的这个DEMO比较简单只是简单的配合标题栏多个View视图的切换,项目虽小,在此基础上还是可以做很多创新的,比如可以做出APP首次启动的引导页,列表视图头部轮播的动态导引图等等。相信大家对ViewPager也十分熟悉了,我就不具体介绍ViewPager了,其实知识都是相融相通的,我喜欢把ViewPager跟ListView拿到一块来看,你如果用心去比较这两个组件其实是有很大的相似的。
先是一个PagerAdapter,可以类比写listView时的BaseAdapter
/**
* Created by 谢栋 on 2017/1/31.
*/
public class MyPagerAdapter extends PagerAdapter {
private List<View> viewList;
private Context context;
private String titles [] ={"第1页","第2页","第3页"};
public MyPagerAdapter(Context context,List<View> viewList){
this.viewList = viewList;
this.context = context;
}
@Override
public int getCount() {
return viewList.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view==object;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
View view = viewList.get(position);
container.addView(view);
return view;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(viewList.get(position));
}
@Override
public int getItemPosition(Object object) {
return super.getItemPosition(object);
}
@Override
public CharSequence getPageTitle(int position) {
return titles[position];
}
}
<?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:orientation="vertical">
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.view.PagerTabStrip
android:id="@+id/pager_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</android.support.v4.view.ViewPager>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="第1页"
/>
</LinearLayout>
最后是配置ViewPager的activity代码
/**
* Created by 谢栋 on 2017/1/31.
*/
public class ViewPagerTest extends Activity{
private ViewPager viewpager;
private PagerTabStrip PagetTitle;
private List<View> viewList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.viewpager_layout);
initViews();
viewpager.setAdapter(new MyPagerAdapter(this,viewList));
}
private void initViews() {
viewpager = ((ViewPager) findViewById(R.id.viewpager));
PagetTitle = ((PagerTabStrip)findViewById(R.id.pager_title));
LayoutInflater inflater = LayoutInflater.from(this);
//添加布局
viewList.add(inflater.inflate(R.layout.viewpager_1,null));
viewList.add(inflater.inflate(R.layout.viewpager_2,null));
viewList.add(inflater.inflate(R.layout.viewpager_3,null));
//设置PagerTabStrip
PagetTitle.setBackgroundColor(Color.BLUE);
PagetTitle.setTabIndicatorColor(Color.RED);
PagetTitle.setTextColor(Color.WHITE);
}
}