ViewPage实现广告轮播

先看效果图:
在这里插入图片描述
一、ViewPager是什么?(知道怎么回事即可)
谷歌官方解释大致意思如下:
1.布局管理器允许左右翻转带数据的页面,你想要显示的视图可以通过实现PagerAdapter来显示。
2.ViewPager经常用来连接Fragment,它很方便管理每个页面的生命周期,使用ViewPager管理Fragment是标准的适配器实现。
最常用的实现一般有FragmentPagerAdapter和FragmentStatePagerAdapter。
3.FragmentPagerAdapter和FragmentStatePagerAdapter是ViewPager和Fragment一起使用时才会用到。

二、ViewPager用途是什么?(知道是用来干嘛的就行)
1.最常用的就是广告轮播效果都是用ViewPager实现的。
2.APP的引导页面也是用ViewPager来实现。

三、ViewPager的基本使用(重点)
首先使用ViewPager之前你必须必备的知识:适配器的使用
步骤如下:
1.在布局文件中添加如下代码:

<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v4.view.ViewPager>

2.设置适配器
继承PagerAdapter
必须重写四个方法
getCount():获得viewpager中有多少个view
destroyItem():移除一个给定位置的页面。适配器有责任从容器中删除这个视图。 这是为了确保在finishUpdate(viewGroup)返回时视图能够被移除。
instantiateItem(): ①将给定位置的view添加到ViewGroup(容器)中,创建并显示出来 ②返回一个代表新增页面的Object(key),通常都是直接返回view本身就可以了,当然你也可以 自定义自己的key,但是key和每个view要一一对应的关系
isViewFromObject(): 判断instantiateItem(ViewGroup, int)函数所返回来的Key与一个页面视图是否是 代表的同一个视图(即它俩是否是对应的,对应的表示同一个View),通常我们直接写 return view == object
适配器代码:

public class MyviewpagerAdapter extends PagerAdapter {
    private  Context context;  //上下文这里代表前面传过来的MainActivity
    private  List<ImageView> listview;//数据源,要显示的图片
    private  ViewPager viewPager;
/*
 * 构造函数:初始化传过来的上下文,ViewPager和数据源
 *Context:上下文
 */
 public MyviewpagerAdapter(Context context, ViewPager viewPager, List<ImageView> listview){  
    this.context=context;
    this.listview=listview;
    this.viewPager=viewPager;
}
@Override
public int getCount() {
    return listview.size();
}//获得viewPager要显示多少个视图
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {
    return view==o;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
    container.removeView(listview.get(position));//移除一个给定位置的页面
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
    container.addView(listview.get(position));//给定位置添加显示一个view
    return  listview.get(position);//返回View本身
}
 }

3.Viewpager设置适配器(MainActivity中的代码)

public class MainActivity extends AppCompatActivity {
private  long dowmtime;
private  boolean isloop=true;
private  int dowmx;
List<View> listview;
private ViewPager viewPager;
List<String> list ;
private List<ImageView> mlist;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // 去掉标题栏(必须要在setContentView(R.layout.activity_main)之前声明)
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.activity_main);
    viewPager=findViewById(R.id.viewpager);
    // 数据源
    mlist = new ArrayList<>();
    // 这里是我们自定义的图片,一般都是从网上解析的图片
    int[] imageRes = getImageRes();
    for (int i = 0; i < imageRes.length; i++) {
        ImageView iv = new ImageView(this);
        //设置背景
        iv.setBackgroundResource(imageRes[i]);
        mlist.add(iv);
    }
   MyviewpagerAdapter myviewpagerAdapter=ne MyviewpagerAdapter(MainActivity.this,viewPager, mlist)
   viewPager.setAdapter(myviewpagerAdapter);
    // tb_laoyut.setTabMode(TabLayout.MODE_FIXED);//设置tab模式,当前为系统默认模式
    //tb_laoyut.setupWithViewPager(viewPager);  //将TabLayout和ViewPager关联起来。
   viewPager.setCurrentItem(1);
   //返回图片数组,这个图片是放在drawable下
   private int[] getImageRes() {
        return new int[] { R.drawable.c,R.drawable.a, R.drawable.b, R.drawable.c,R.drawable.a
        };
}
}

四、ViewPager+Tablayout的使用(重点,后续)
五、Viewpager+Tablayout+Fragment的使用(重点,后续)
通过上面三个步骤已经实现了Viewpager切换效果。需要源码和教程可直接扫码关注公众号。有任何问题可回复“1”可添加小编微信哦!
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值