引言
ViewPager 是 android 扩展包 v4 包中的类,这个类可以让用户左右切换当前的 view。ViewPager 直接继承了 ViewGroup,所有它是一个容器类,可以在其中添加其他的 view 类。ViewPager 需要一个 PagerAdapter 适配器类给它提供数据。ViewPager 经常和 Fragment 一起使用,并且提供了专门的 FragmentPagerAdapter 和 FragmentStatePagerAdapter 类供 Fragment 中的 ViewPager 使用。
基本用法
布局写法
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipChildren="false">
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="400dp"
android:layout_centerInParent="true"
android:layout_marginLeft="60dp"
android:layout_marginRight="60dp"
android:clipChildren="false"></android.support.v4.view.ViewPager>
</RelativeLayout>
适配器定义
public class ManyPictureAdapter extends PagerAdapter {
private List<Integer> list;
private Context context;
public ManyPictureAdapter(Context context, List<Integer> list) {
this.context = context;
//应用数据
this.list = list;
}
@Override
public int getCount() {
//支持的view总数
return list.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
ImageView iv = new ImageView(context);
//设置图片适应xy轴
iv.setScaleType(ImageView.ScaleType.FIT_XY);
iv.setImageResource(list.get(position));
//增加子view到viewpager里
container.addView(iv);
return iv;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
//删除子view到viewpager里
container.removeView((View) object);
}
调用方法
ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);
//设置ViewPager中两页之间的距离
viewPager.setPageMargin(80);
// 设置预加载的页数,我们知道默认情况下这个参数为1,也就是左右各预加载一页,但是我们这里要让左右各预加载两页
viewPager.setOffscreenPageLimit(3);
List<Integer> list = new ArrayList<>();
list.add(R.mipmap.bg_splash1);
list.add(R.mipmap.bg_splash2);
list.add(R.mipmap.bg_splash3);
list.add(R.mipmap.bg_splash4);
ManyPictureAdapter adater = new ManyPictureAdapter(this, list);
viewPager.setAdapter(adater);
//设置切换动画(缩放动画)
viewPager.setPageTransformer(false, new ScaleTransformer());
以上就是viewpager搭配view的基本写法,view包括 textView,ImageView等功能组件,或者 LinearLayout等容器组件,都是可以的。
常用api
viewPager.setCurrentItem(index);
滚动到目标页
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {})
添加滚动监听
viewPager.setPageTransformer(false, new ScaleTransformer());
设置页面滚动效果动画
结语
其实用法还是很简单的,给大家一个建议,当需要用这种组合时,直接抄本文的结构改一下,就好了,剩下的都是自己的业务代码了