一、ViewPager介绍
ViewPager可以使视图左右滑动
1、加入ViewPager
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"></android.support.v4.view.ViewPager>
2、加载显示的页卡
将Layout布局转换为View对象
LayoutInflater if = getLayoutInflater().from(this);
if.inflate(resource,root);
View.inflate(context,resource,root);
3、配置Adapter
(1)PagerAdapter 数据源:List
(2)FragmentPagerAdapter 数据源:List
(3)FragmentStatePagerAdapter 数据源:List
二、适配器PagerAdapter
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private List<View>viewList;
private ViewPager pager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
viewList = new ArrayList<>();
/**
* 通过View对象去做ViewPager的数据源
*/
View view1 = View.inflate(this,R.layout.view1,null);
View view2 = View.inflate(this,R.layout.view2,null);
View view3 = View.inflate(this,R.layout.view3,null);
View view4 = View.inflate(this,R.layout.view4,null);
viewList.add(view1);
viewList.add(view2);
viewList.add(view3);
viewList.add(view4);
//初始化ViewPager
pager = (ViewPager) findViewById(R.id.pager);
//创建PagerAdapter的适配器
MyPagerAdapter adapter = new MyPagerAdapter(viewList);
//ViewPager加载适配器
pager.setAdapter(adapter);
}
}
public class MyPagerAdapter extends PagerAdapter{
private List<View>viewList;
public MyPagerAdapter(List<View>viewList){
this.viewList = viewList;
}
/**
* 返回的是页卡的数量
*/
@Override
public int getCount() {
return viewList.size();
}
/**
* View是否来自于对象
*/
@Override
public boolean isViewFromObject(View view, Object object) {
return view==object;
}
/**
* 实例化一个页卡
*/
@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(viewList.get(position));
return viewList.get(position);
}
/**
* 销毁一个页卡
*/
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(viewList.get(position));
}
}
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"></android.support.v4.view.ViewPager>
三、PagerTabStrip和PagerTitleStrip
<android.support.v4.view.PagerTabStrip
android:id="@+id/tab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top"
></android.support.v4.view.PagerTabStrip>
<android.support.v4.view.PagerTitleStrip
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
></android.support.v4.view.PagerTitleStrip>
MyPagerAdapter文件里
private List<View>viewList;
private List<String>titleList;
public MyPagerAdapter(List<View> viewList, List<String> titleList){
this.viewList = viewList;
this.titleList = titleList;
}
MainActivity中
public class MainActivity extends AppCompatActivity {
private List<View>viewList;
private ViewPager pager;
private PagerTabStrip tab;
private List<String>titleList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
viewList = new ArrayList<>();
/**
* 通过View对象去做ViewPager的数据源
*/
View view1 = View.inflate(this,R.layout.view1,null);
View view2 = View.inflate(this,R.layout.view2,null);
View view3 = View.inflate(this,R.layout.view3,null);
View view4 = View.inflate(this,R.layout.view4,null);
viewList.add(view1);
viewList.add(view2);
viewList.add(view3);
viewList.add(view4);
//为ViewPager页卡设置标题
titleList = new ArrayList<String>();
titleList.add("第一页");
titleList.add("第二页");
titleList.add("第三页");
titleList.add("第四页");
//为PagerTabStrip设置一些属性
tab = (PagerTabStrip) findViewById(R.id.tab);
tab.setBackgroundColor(Color.YELLOW);
tab.setTextColor(Color.BLUE);
tab.setDrawFullUnderline(false);//不显示最底下划线
tab.setTabIndicatorColor(Color.GREEN);
//初始化ViewPager
pager = (ViewPager) findViewById(R.id.pager);
//创建PagerAdapter的适配器
MyPagerAdapter adapter = new MyPagerAdapter(viewList,titleList);
//ViewPager加载适配器
pager.setAdapter(adapter);
}
}
三、适配器FragmentPagerAdapter
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import java.util.List;
/**
* Created by USER on 2016/2/1.
*/
public class MyFragmentPagerAdapter extends FragmentPagerAdapter{
private List<Fragment>fragList;
private List<String>titleList;
public MyFragmentPagerAdapter(FragmentManager fm, List<Fragment> fragList, List<String> titleList) {
super(fm);
this.fragList = fragList;
this.titleList = titleList;
}
@Override
public CharSequence getPageTitle(int position) {
return titleList.get(position);
}
@Override
public Fragment getItem(int position) {
return fragList.get(position);
}
@Override
public int getCount() {
return fragList.size();
}
}
ViewPager与Fragment作为组合使用方式较多,Fragment的生命周期较全,View的一些销毁和创建的一些逻辑过程,并没有像Fragment那么好控制,如果图方便,只是为了展示,不需要太多输入事件处理,可以拿View去填充ViewPager,业务逻辑复杂,则可用ViewPager与Fragment作为组合。