ViewPager轮播图之View视图

先简单介绍一下 微信中的左右滑动可以切换联系人和消息,有些应用图片自动播放就是用 ViewPager 做的;

介绍过之后直接讲解;
既然轮播的是视图自然咋们的线性布局或者相对布局中就要使用 ViewPager此View当然此ViewPager跟咋们的ListView一样是需要适配器的;

 ViewPager 是support    .v4包中的;
 
  
<android.support.v4.view.ViewPager android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/vpae"></android.support.v4.view.ViewPager>

接下来找到此 ViewPager ;后去设置适配器不然没法进行下一步
 
  
qwe = (ViewPager) findViewById(R.id.vpae);

new一个新类去继承PagerAdapter此类为适配器

public class SHipei extends PagerAdapter {
    //使用一个ArrayList去存放View因为咋们的泛型是Object所以可以存放任意类型
    ArrayList<View>list=new ArrayList<>();
    //上下文
    Context context;
//使用构造让让用到适配的地方传入咋们需要的函数
    public SHipei(ArrayList<View> list, Context context) {
        this.list = list;
        this.context = context;
    }

    //此方法是返回集合元素个数      如果返回0那么对不起你看到的白板 你返回几个就有几个View视图
    @Override
    public int getCount() {
        return list.size();
    }

    //这边这个方法在API中的解释是view和object是否相关直接用==就OK
    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view==object;
    }
//把List中的View视图添加到ViewGroup中并返回此视图
    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        container.addView(list.get(position));
        return list.get(position);
    }
//这边是把ViewGroup中的视图remove掉因为咋们的轮播中当你处在索引为0的视图中其实你的索引为1的View也在
// 加载中当你为索引1的时候你的索引0和2的View也在加载也就是说你不把以前加载的View删除那么加载的多了
    //可能会内存溢出或者卡顿

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView(list.get(position));
    }}
 
 

接下来绑定咋们的适配器和初始化函数就可以
 
  
package com.example.myapplication;

import android.os.Bundle;
import android.support.design.widget.TabLayout;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

    private ViewPager viewpag;
    private TabLayout tabaa;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }

    private void initView() {
        viewpag = (ViewPager) findViewById(R.id.viewpag);
        tabaa = (TabLayout) findViewById(R.id.tabaa);
        tabaa.setupWithViewPager(viewpag);
    }
}

猜你喜欢

转载自blog.csdn.net/qq_42046338/article/details/80289451