项目运行时判断是否第一次打开而进行的跳转以及引导页ViewPager的实现

在每个项目中,基本上都有欢迎页,引导页的存在,所以就牵涉到,用户在使用这个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都去继承这个公共类,然后实现其中的方法.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值