1、在android.support.V4.view包下
2、父类:ViewGroup
3、ViewPager概述:
1) 当前显示页卡组中的一个对象
2) 能够实现左右平滑的效果进行切换
3) 需要设置适配器:PagerAdapter
至少需要实现4个方法:
① getCount():返回显示的页卡总数
② instantiateItem(ViewGroup container, int position)初始化当前position位置的页卡,每次最多能初始化3个页卡的内容。返回一个Object对象(键)
③ isViewFromObject(View agr0,Object arg1):确定是否一个带有特殊键对象的页卡视图。和instantiateItem(ViewGroup container, int position)返回值相关联
④ deStroyItem(ViewGroup container,int position,Object object){ container.removeView(ViewList..get(position))};
ViewList——装载每个页卡视图的集合
移除position位置的View
4、ViewPager的使用
a. 在布局文件中设置ViewPager的属性 <包名.类名>
b. 加载要显示的页卡组
c. 实现适配器的功能
d. 初始化ViewPager,并设置适配器
使用ViewPager设置引导页,小圆点,引导页
1.具体的实现步骤:
第一步:
xml创建布局,调用ViewPager控件,在android.support.v4.view.ViewPager里面
设置ViewPager的ID宽高。然后viewpager.setAdapter(arg0)设置适配器 适配器是将后台数据显示在前台界面的桥梁。
第二步:
方法一:
使用ArrayList设置视图imageView集合。在设置适配器之前添加内容,通过for循环加载图片:int id=getResources().getIdentifier("a"+i图片名称, "drawable"资源类型, getPackageName())应用程序的包名;然后创建imageview对象iv,每循环一次创建一次对象,并且set背景放置id;
把对象iv添加add进imageView集合。
方法二:
使用ArrayList设置View集合,加载的样式以布局样式。layout设置布局,需要几个页面设置几个布局。
加载布局将XML转换成布局需要用到布局过滤器viewList.add(getLayoutInflater()/*布局过滤器*/.inflate/*解析*/(R.layout.pager1, null)),有几个页面就加载几个。
第三步:
设置适配器,建内部类,继承适配器class MyPagerAdapter extends PagerAdapter,重写里面的2个getCount和isViewFromObject方法。
getCount是设置页卡的数量 集合里的元素有多少个就显示多少页,getCount里返回集合的长度。
isViewFromObject是当前的对象是不是视图如果是的话,显示视图
instantiateItem 每次最多能初始化3个页卡的内容position:当前的页卡,往视图组container添加当前的页面container.addView(viewList.get(position));
destroyItem是销毁当前的视图,container.removeView(viewList.get(position));
适配器设置完,返回设置参数viewpager.setAdapter(new MyPagerAdapter )
第四步:
设置小圆圈,OnPageChangeListener手势监听使用,定义手势监听对象,重写三个方法
在XML设置要被使用的线性布局,圆圈要添加在的区域。
声明LinerLayout对象,进行实例化(findViewById),添加的内容用集合表示ArrayList<imageView> pointList=...
往集合添加视图的地方同时添加圆。实例化ImageView iv2=new ImageView(this);
对象调用设置背景方法setBackgroundResource(R.drawable.adware_style_default);
往集合add添加iv2,设置圆点的间距setPadding方法
添加布局:
设置布局参数 LayoutParams params=new LayoutParams(20,15); 定义设置线性布局里的子控件的宽高。
设置手势监听器viewpager.setOnPageChangeListener(new OnPageChangeListener() ,重写监听器的三个方法:
onPageSelected(int arg0)页卡选中 arg0代表页卡选中的id选中的界面
onPageScrolled(int arg0, float arg1, int arg2页卡滑动当前页卡 滑动的百分比 滑动的像素
onPageScrollStateChanged(int arg0)*滑动的状态 0滑动结束 1滑动开始 2滑动中
然后为线性布局添加每个控件linear.addView(pointList.get(i),params);必须写在for循环里。
Params参数代表每一个ImageView 的宽高
第六步:
给圆圈设间隙
params.setMargins(30, 0, 0, 40);//设置间距
设置圆圈切换界面时变化
在页卡滑动onPageScrolled方法里遍历图标集合长度,
当i=当前界面时,pointList.get(arg0).setBackgroundResource(R.drawable.adware_style_selected);使用这张图片
否则的话pointList.get(i).setBackgroundResource(R.drawable.adware_style_default);使用者图片
第六步:
设置引导页完成,浮现按钮跳转界面
创建第二界面的Activity继承Activity,在布局中设置跳转的button,并设置android:visibility="gone"隐藏属性。
在MainActivit的页卡滑动onPageScrolled方法里判断arg0==pointList.size()-1当前页面等于数组长度,button.setVisibility(View.VISIBLE);调用方法显示button。
实例化按钮设置button点击事件,设置跳转界面Intent intent=new Intent(MainActivity.this,SecondActivity.class); startActivity(intent);