在每个项目中,基本上都有欢迎页,引导页的存在,所以就牵涉到,用户在使用这个APP时,第一次打开会给用户展示引导页进行引导使用,而以后的打开软件就不再需要进行展示引导页,所以这就牵涉到欢迎页面的跳转判断问题,在此,通过一种方法进行实现.如下代码:
WelcomeActivity:
public static final String IS_FIRST_IN = "isFirstIn";//是否是第一次进入App private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case 0: startActivity(new Intent(WelcomeActivity.this, LoginActivity.class)); finish(); break; case 1://第一次进入app startActivity(new Intent(WelcomeActivity.this, GuideActivity.class)); finish(); break; default: break; } } };然后定义方法进行判断:
private void initOpen() { //判断是否是第一次进入app boolean isFirstIn = CacheUtil.getBoolean(getApplicationContext(),IS_FIRST_IN,true); if (isFirstIn) { handler.sendEmptyMessageDelayed(1, 3000); // CacheUtil.getBoolean(getApplicationContext(),"isFirstIn", true); } else { handler.sendEmptyMessageDelayed(0, 3000); } }当然,此处所定义的CacheUtil就是定义的sp工具类,进行存取值的操作.
下面就是关于引导页常见的ViewPager的图片加载实现,以及最后一张图片ImageView的点击跳转事件:
GuideActivity:添加图片和最后一张图片添加ImageView,实现点击跳转,如下代码:
public class GuideActivity extends ZqBaseActivity implements View.OnClickListener {
@Override protected void initData() { //准备数据 //把图片数据转换成ImageView提供给Adapter int[] imgIds = new int[]{ R.drawable.guide_1, R.drawable.guide_2, R.drawable.guide_3, R.drawable.guide_4 }; imgs = new ArrayList<ImageView>(); for(int i = 0;i<imgIds.length;i++){ ImageView imageView = new ImageView(this); //imageView.setImageResource(imgIds[i]); imageView.setBackgroundResource(imgIds[i]); imgs.add(imageView); } }
/** * 重写父类方法,初始化操作 */ @Override protected void initOperat() { //设置Adapter vp_guide_bg.setAdapter(new MyAdapter()); //监听ViewPager vp_guide_bg.setOnPageChangeListener(new MyOnPageChangeListener()); } class MyOnPageChangeListener implements ViewPager.OnPageChangeListener{ @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { //当ViewPager滑动到最后一页时,把按钮显示出来 if(position==imgs.size()-1){ iv_guide_bt.setVisibility(View.VISIBLE); }else{ iv_guide_bt.setVisibility(View.GONE); } } @Override public void onPageScrollStateChanged(int state) { } }
class MyAdapter extends PagerAdapter{ @Override public int getCount() { return imgs.size(); } @Override public boolean isViewFromObject(View view, Object object) { return view==object; } @Override public Object instantiateItem(ViewGroup container, int position) { ImageView imageView = imgs.get(position); container.addView(imageView); return imageView; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } }下面实现ImageView点击事件:(因为在上面已经实现了监听,所以此处参数直接放置this)
iv_guide_bt.setOnClickListener(this);
@Override public void onClick(View v) { //点击按钮后,存值打开过软件了 CacheUtil.putBoolean(this,WelcomeActivity.IS_FIRST_IN,false); startActivity(new Intent(this,LoginActivity.class)); finish(); }
*注:在设置viewPager适配器时,起始我没有把调用setAdapter写到initOperat中,所以报了空指针异常,此处initOperat方法是框架搭建时所建的一个公共类,这个方法就是进行初始化操作的,新建的Activity都去继承这个公共类,然后实现其中的方法.