仿彩之云 APP 启动页和导航页

1,615 阅读1分钟
原文链接: www.jianshu.com
  • 引导页
    此处用四张图片来做引导页面,同时在最后一个页面提供一个按钮,点击进入主界面。

    //把引导页加入到集合中,views是一个ArrayList
    LayoutInflater inflater = LayoutInflater.from(this);
    views.add(inflater.inflate(R.layout.view_guide_01, null));
    views.add(inflater.inflate(R.layout.view_guide_02, null));
    views.add(inflater.inflate(R.layout.view_guide_03, null));
    views.add(inflater.inflate(R.layout.view_guide_04, null));

    既然用到了ViewPager,那肯定会用到PagerAdapter并必须实现以下几个方法
    destroyItem(), getCount(), instantiateItem(), isViewFromObject()
    提示一下destroyItem(),instantiateItem()两个方法在高版本上已经过时了,分别把他们的第一个参数换成ViewGroup 即可。

    public class GuidePagerAdapter extends PagerAdapter {
      private List views;
      private Activity activity;
    
      public GuidePagerAdapter(List views, Activity activity) {
          this.views = views;
          this.activity = activity;
      }
    
      @Override
      public void destroyItem(ViewGroup container, int position, Object object) {
          container.removeView(views.get(position));
      }
    
      @Override
      public int getCount() {
          return (views == null) ? 0 : views.size();
      }
    
      @Override
      public Object instantiateItem(ViewGroup container, int position) {
          container.addView(views.get(position), 0);
          //当滑动到最后一页的时候,监听按钮
          if (position == views.size() - 1) {
              TextView tvEnter = (TextView) container.findViewById(R.id.tv_guide_enter);
    
              tvEnter.setText(String.format(ResUtil.getString(R.string.guide_enter), APPUtil.getVersionName(activity)));
              tvEnter.setOnClickListener(new View.OnClickListener() {
    
                  @Override
                  public void onClick(View v) {
                      //在此记录曾经浏览过导航页,下次启动将不会进入导航页
                      SPUtil.put(Constant.SP_IS_FIRST_LOGIN, true);
    
                      StartActivityUtil.startActivity(activity, MainActivity.class);
                      activity.finish();
                  }
              });
          }
          return views.get(position);
      }
    
      @Override
      public boolean isViewFromObject(View arg0, Object arg1) {
          return (arg0 == arg1);
      }
    }

    源码:github.com/GitPhoenix/…