Android chapter01 ViewPager

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()方法来获得其中的界面元素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值