viewpager的是为了 实现左右滑动切换页面的效果, 常用于与导航栏和 广告栏
ViewPager+Fragment配合使用。
1.ViewPager类需要一个PagerAdapter适配器类给它提供数据。
2.Viewpager 继承自viewgroup是一个容器类。
1.简单使用
(1)导入布局 viewpager控件存在v4jar包里 使用的时候需要先导入找到控件android.support.v4.view.ViewPager
(2)PageAdapter 必须重写的四个函数:
int getCount() \\返回要滑动的VIew的个数
boolean isViewFromObject(View arg0, Object arg1) \\ view和object是否有关联
Object instantiateItem(ViewGroup container, int position)
第一:将当前视图添加到container中,
第二:返回当前View
void destroyItem(ViewGroup container, int position,Object object)
从当前container中删除指定位置(position)的View;
先看效果为了方便3个view的颜色分别是黄绿蓝 为了看起来明显一些。
1.布局
<RelativeLayout
文件
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.viewpagerdemo.MainActivity$PlaceholderFragment">
<android.support.v4.view.ViewPager
android:id="@+id/viewpger"
android:layout_width="wrap_content"
android:layout_gravity="center"
android:layout_height="wrap_content" />
</RelativeLayout>
(2) MainActivity 里的代码
public class MainActivity extends ActionBarActivity {
private ViewPager viewPager;//viewpager控件
private View view1, view2, view3;//3个view存放3个布局文件
PagerAdapter pagerAdapter;//pageradpter必须要重写的适配器
private List<View> viewlist;//把布局存放在集合里边作为数据源
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_main);
viewPager = (ViewPager)findViewById(R.id.viewpger);//找控件
LayoutInflater inflater = getLayoutInflater();//布局加载器
view1 = inflater.inflate(R.layout.first_layout, null);//
view2 = inflater.inflate(R.layout.second_layout, null);
view3 = inflater.inflate(R.layout.three_layout, null);
viewlist = new ArrayList<View>(); // 存放View的集合
viewlist.add(view1);
viewlist.add(view2);
viewlist.add(view3);
pagerAdapter = new PagerAdapter() {
//初始化绑定数据
@Override
public Object instantiateItem(View container, int position) {
// TODO Auto-generated method stub
((ViewGroup) container).addView(viewlist.get(position));
return viewlist.get(position);
}
// 滑动切换的时候销毁当前的组件
@Override
public void destroyItem(View container, int position, Object object) {
// TODO Auto-generated method stub
((ViewPager) container).removeView(viewlist.get(position));
}
// 每次滑动的时候生成的组件
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0 == arg1;
}
// viewpager中的组件数量
@Override
public int getCount() {
// TODO Auto-generated method stub
return viewlist.size();
}
};
viewPager.setAdapter(pagerAdapter);//设置adpter
}
}