ViewPager实现多页面切换

本文详细介绍如何使用ViewPager实现多页面切换效果,包括配置环境、自定义适配器及在Activity中实现逻辑等步骤。

ViewPager用于实现多页面的切换效果,该类存在于Google的兼容包里面,所以在引用时记得在BuilldPath中加入“android-support-v4.jar”
首先必须知道:要使用ViewPager,必须要使用PagerAdapter为其提供数据,也就必须实现下面四个方法:
1, getCount():ViewPager需要显示的页面个数
2,isViewFromObject(View view, Object object):view 是某个位置的页面,Object是 instantiateItem 方法返回的。在这个方法需要判断这页面与Object对象是
否是同一个对象。
3,instantiateItem(ViewGroup container, int position):生成对应位置的页面,container 就是显示页面的容器,position 就是对应的页面的序号
4,destroyItem(ViewGroup container, int position, Object object):将指定页面销毁
其实现代码”如下”:
1,直接在布局文件中引入ViewPager
注意:必须要导入其依赖包android.support.v4

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

2,自定义一个适配器继承于PagerAdapter,并覆写其四个方法

public class MyPagerAdapter extends PagerAdapter {

    private Context mContext;
    private int[] mResId;

    public MyPagerAdapter(Context context, int[] resId) {
        this.mContext = context;
        this.mResId = resId;
    }

    //设置内部pager页面的数量
    @Override
    public int getCount() {
        return mResId.length;
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        //判断页面与object是否是同一个对象
        return view == object;
    }

    //必须重新覆写instaniateItem()和destroyItem()二个方法才能进行展示
    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        View view = View.inflate(mContext, R.layout.item, null);
        View iv_item = view.findViewById(R.id.iv_item);
        iv_item.setBackgroundResource(mResId[position]);
        //必须将填充出来的view添加到ViewGroup中去,其container表示当前页面的容器
        container.addView(view);
        return view;
    }

    //不使用的时候,将其销毁
    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        //父类实现的方法是抛异常(源码)
        //   super.destroyItem(container, position, object);
        container.removeView((View) object);
    }
}

3,activity中实现其逻辑

public class MainActivity extends Activity {

    private ViewPager mUp;

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

    private void initData() {
        int[] resId = new int[]{R.drawable.shi, R.drawable.ni, R.drawable.haha};
        //给ViewPager设置内容
        MyPagerAdapter adapter = new MyPagerAdapter(getApplicationContext(), resId);
        mUp.setAdapter(adapter);
    }

    private void initeView() {
        mUp = (ViewPager) findViewById(R.id.up);
    }
}

其效果图为:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值