先简单介绍一下 微信中的左右滑动可以切换联系人和消息,有些应用图片自动播放就是用
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); } }