ViewPager(页面滑动)

//ViewPager

//*.xml

//添加ViewPager

<android.support.v4.view.ViewPager
        android:id="@+id/lead_img_vp"
        android:layout_width="match_parent"
        android:layout_height="400dp"></android.support.v4.view.ViewPager>
//添加Tablayer

</pre><pre name="code" class="html"><android.support.design.widget.TabLayout
        android:id="@+id/tab"
        android:layout_width="match_parent"
        android:layout_height="50dp"></android.support.design.widget.TabLayout>


//配置适配器

//继承PagerAdapter时只有2个方法 ,另外instantiateItem和destroyItem是后来手动添加的, CharSequence getPageTitle是Tablayre后面要用的

public class Myadapter extends PagerAdapter {                 //继承PagerAdapter
    Context context;                                          //接收传入的上下文
    List<View> list;                                          //Pager 中 页面的数量
    List<String> listtitle;                                   

    public Myadapter(Context context, List<View> list) {                                                               //构造函数
        this.context = context;
        this.list = list;
    }

    public Myadapter(Context context, List<View> list, List<String> listtitle) {                                       //后面要用
        this.context = context;
        this.list = list;
        this.listtitle = listtitle;
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {           //在Pager中创建视图
        View view=list.get(position);
        container.addView(view);
        return view;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {   //销毁视图
        View view=list.get(position);
        container.removeView(view);

    }

    @Override
    public int getCount() {                                                       //视图的数量
        return list.size();
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {                                
        return view==object;
    }

    @Override
    public CharSequence getPageTitle(int position) {                            
        return listtitle.get(position);
    }

//添加Pager到Activity

//viewpager监听

//onPageScrollStateChanged  有个状态“0”代表页面停止滑动,“1”代表在滑动的过程中,“2”滑动停止,最后一个页面“向后滑”不会有2状态,
下面有判断是否是最后一个页面的
<pre name="code" class="java">//onPageScrolled    计算偏移量
//onPageSelected   当前在哪一个页面,postion为当前页面的下标

 
</pre><p></p><p></p><pre name="code" class="java">ViewPager viep;
    Myadapter mad;                                                  //申明适配器,视图列表,Tablayout列表,判断是不是最后一页,申明Tablayout
    List<View> list;                                                                  
    List<String> listname;
    boolean flag=false;
    TabLayout tab;
    @Override
    public void setview() {
        setContentView(R.layout.lead);
        viep= (ViewPager) findViewById(R.id.lead_img_vp);
        list=new ArrayList<>();
        listname=new ArrayList<>();
        View view1=getLayoutInflater().inflate(R.layout.table1,null);                                     
        View view2=getLayoutInflater().inflate(R.layout.table2,null);
        View view3=getLayoutInflater().inflate(R.layout.table3,null);
        list.add(view1);
        list.add(view2);
        list.add(view3);
        listname.add("1");
        listname.add("2");
        listname.add("3");
        tab= (TabLayout) findViewById(R.id.tab);
        mad=new Myadapter(this,list,listname);
        viep.setAdapter(mad);                                                       //添加viewpager适配器
        tab.setupWithViewPager(viep);                                               //将Tablayout添加到viewpager中
        tab.setTabsFromPagerAdapter(mad);                                           //添加Tablayout适配器
        tab.getTabAt(0).setIcon(R.mipmap.logo_4);                                   //初始化Tablayout的图片
        for(int i=1;i<3;i++)
            tab.getTabAt(i).setIcon(R.mipmap.logo_3);
        viep.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {            //viewpager监听
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                tab.getTabAt(position).setIcon(R.mipmap.logo_4);
                for(int i=0;i<listname.size();i++)
                    if(i!=position)
                    tab.getTabAt(i).setIcon(R.mipmap.logo_3);
            }
            @Override
            public void onPageScrollStateChanged(int state) {  
</pre><pre name="code" class="java">
                //判断是不是最后一个页面        
                switch (state){
                    case 0:
                        if(!flag&&(viep.getCurrentItem()==list.size()-1)){
                            Intent intent=new Intent(Leadactivity.this,Home.class);
                            startActivity(intent);
                        }
                        flag=false;
                        break;
                    case 1:
                        flag=false;
                        break;
                    case 2:
                        flag=true;
                        break;
                }
            }
        });





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值