android使用ViewPager实现欢迎引导页

jopen 8年前

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一个布局文件。

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

源码下载地址

来自: http://blog.csdn.net/wingichoy/article/details/47102335