ViewPager
主要步骤:
1.封装数据(view或图片等等),存到list中;
2.活动引入ViewPager的布局文件
3.初始化pager,包括动态加载布局文件以及在第一个和最后一个位置分别插入对应的数据,以及保存当前下标,用于循环;
4.重新适配器的方法,四个;
5.添加监听器,主要是保存当前下标以及判断第一个和最后一个的切换
具体代码展示
1.main_layout布局
2.三个view页面
3.viewpager的适配器:
4.
1. 假设三个view页面,如果需要实现循环轮播则在第一个前面加上最后一个view,在最后一个view后面加上第一个view。
2.初始化显示下标为1的view,即第二个,并且赋值给当前的数值。
5.循环监视器:
初始化viewpager的代码:
private void initView() {
LayoutInflater li = getLayoutInflater();
/* View view_one = View.inflate(this, R.layout.view_one, null);//获取view
View view_two = View.inflate(this, R.layout.view_two, null);
View view_three = View.inflate(this, R.layout.view_three, null);*/
viewList.add(li.inflate(R.layout.view_three,null,false));
viewList.add(li.inflate(R.layout.view_one,null,false));
viewList.add(li.inflate(R.layout.view_two,null,false));
viewList.add(li.inflate(R.layout.view_three,null,false));
viewList.add(li.inflate(R.layout.view_one,null,false));
myviewPager.setAdapter(new MyPagerAdapter());
myviewPager.setCurrentItem(1,false);
currentPosition=1;//当前的下标
//监听器
myviewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
//页面滑动调用此方法,滑动停止前,此方法一直被调用。其中有三个参数:
//第一个参数:当前页面及点击滑动的页面
//第二个参数:当前页面偏移百分比
//第三个参数:当前页面偏移的像素位置
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
//页面跳转完后调用,参数是你当前选中页面的Position(位置编号)
@Override
public void onPageSelected(int position) {
currentPosition = position;//滑动完成保存下标
}
//状态改变时调用,其中参数有三种状态(0,1,2),
// 状态为1,表示正在滑动;为2表示滑动完毕;为0表示手指离开屏幕。
@Override
public void onPageScrollStateChanged(int state) {
// 如果当前是在首位,那么跳转到倒数第2位
if (currentPosition == 0) {
myviewPager.setCurrentItem(viewList.size() - 2, false);
// 如果当前是在末位,跳转到第2位
} else if (currentPosition == viewList.size() - 1) {
myviewPager.setCurrentItem(1, false);
}
}
});
二.小知识提醒
Android LayoutInflater详解
在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById()。不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且实例化,就是动态加载布局或控件;而findViewById()是找xml布局文件下的具体widget控件(如Button、TextView等),即已经加载好的布局。
具体作用
1、对于一个没有被载入或者想要动态载入的界面,都需要使用LayoutInflater.inflate()来载入;
2、对于一个已经载入的界面,就可以使用Activiyt.findViewById()方法来获得其中的界面元素。