android使用ViewPager实现欢迎引导页

android使用ViewPager实现欢迎引导页

大多数APP第一次启动的时候,都会有一个引导界面,左右滑动,到最后一张,用户点击才再次进入主界面。当第二次启动的时候,则直接进入主界面。 这种效果一般使用ViewPager实现。今天就来为大家介绍一下ViewPager的使用。

实现步骤:

使用SharedPerferences来记录是否是第一次启动APP,如果是,则转跳到Guide页面,如果不是第一次启动。就转跳到主Activity.

MainActivity:

本Activity作为Logo页面进入,使用handler来实现页面的延迟专跳。对于handler还不太了解的同学,可以来这里学习一下安卓的异步消息传递机制:http://blog.csdn.net/guolin_blog/article/details/9991569 (感谢郭神带来好文章)

private Handler mHandler = new Handler(){

        @Override
        public void handleMessage(Message msg) {
            switch (msg.what){
                case MAIN:
                    Intent intent = new Intent(MainActivity.this,Main.class);
                    startActivity(intent);
                    finish();
                    break;
                case GUIDE:
                    Intent intent2 = new Intent(MainActivity.this,GuideView.class);
                    startActivity(intent2);
                    finish();
                    break;
            }
        }
    };

此外使用SharedPreferences来读取用户启动信息

mSharedPreferences = getSharedPreferences("conf",MODE_PRIVATE);
isFirst = mSharedPreferences.getBoolean("first",true);

之后进行简单的判断,这里不在累赘。

GuideActivity

这个界面是引导页的界面,我们首先在其布局文件下添加一个ViewPager之后在java文件中获取到这个ViewPager,并为这个ViewPager添加一个适配器。 这个适配器需要自己继承PagerAdapter来重写,稍后会进行讲解。

 mViewPager = (ViewPager) findViewById(R.id.viewpager);
        ViewPagerAdapter adapter = new ViewPagerAdapter(mList);
        mViewPager.setAdapter(adapter);

注意这个Adapter的传入参数是一个泛型为View的List。我们先向List里添加我们的View,再为最后一个view的Button添加监听事件,用来转跳到主页面;

mList = new ArrayList<>();
View view = LayoutInflater.from(this).inflate(R.layout.layout1,null);
        mList.add(view);
        view = LayoutInflater.from(this).inflate(R.layout.layout2,null);
        mList.add(view);
        view = LayoutInflater.from(this).inflate(R.layout.layout3,null);
        mList.add(view);
        mButton = (Button) view.findViewById(R.id.button_enter);
        mButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(GuideView.this,Main.class);
                startActivity(intent);
                finish();

            }
        });

ViewPagerAdapter

这是ViewPager的适配器,继承于PagerAdapter,主要实现两个方法:
destroyItem();
instantiateItem();
顾名思义一个是view去掉时候的方法,一个是添加view的方法。
这里可以看到一个很熟悉的参数 container,没错,和baseAdapter的参数很像,都是用来缓存当前view的。接下来只需要调用他的removeView和addView即可。需要注意的是,需要向下转型为ViewPager。

 public void destroyItem(ViewGroup container, int position, Object object) {
        ((ViewPager)container).removeView(mList.get(position));

    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        Log.i("wing","viewAdatper here");
        ((ViewPager)container).addView(mList.get(position));
        return mList.get(position);
    }

另外不要忘记重写他的构造方法。传入一个泛型为view的List


    public ViewPagerAdapter(ArrayList list){
        mList = list;
    }

这样适配器就完成了,大家自己多写几遍就会熟练。对了,别忘了给每个view一个布局文件。

下面看看效果图:
这里写图片描述

源码下载地址

原文地址:https://www.cnblogs.com/muyuge/p/6333575.html