智能管家---6.首页跳转逻辑开发

  • 接下来实现闪屏页,如果是第一次运行程序,闪屏页跳转至引导页,如果不是,就跳转到MainActivity。

  • 同样,我们闪屏页和引导页里面只有一个TextView,表明为闪屏页和引导页。

  • 闪屏页有延迟效果(2s),这里我们通过handler实现,handler有延迟的功能

  • 需要重写handleMessage方法,通过switch来过滤出要使用的msg,如果是闪屏,并且是第一次运行,就跳转到引导页。
    这里写图片描述

  • 接下来判断程序是否第一次运行

  • 获取到boolean值后进行判断
    这里写图片描述

  • 延迟实现:

handler.sendEmptyMessageDelayed(StaticClass.SHARE_SPLASH,2000);
  • 设置字体的style,因为以后可能还要用到设置字体的方法,所以我们将其封装到UtilTools中
    这里写图片描述

  • 为闪屏页的textView设置

mTextView=(TextView)findViewById(R.id.splash_text);
UtilsTools.setFont(this,mTextView);
  • 禁止返回键
    将方法super注释即可
//禁止返回键
    @Override
    public void onBackPressed() {
       // super.onBackPressed();
    }
  • 实现全屏
    因为SplashActivity继承AppCompatActivity,不是继承自Activity,所以不能在AndroidManifest.xml中直接设置全屏主题,我们在style文件中自定义全屏主题
    这里写图片描述
    同时在AndroidManifest.xml中注明:
    这里写图片描述

SplashActivity全部代码:

public class SplashActivity extends AppCompatActivity {

    private TextView mTextView;

    private Handler handler=new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            switch (msg.what){
                case StaticClass.SHARE_SPLASH:
                    if(isFirst()){
                        startActivity(new Intent(SplashActivity.this,GuideActivity.class));
                    }else{
                        startActivity(new Intent(SplashActivity.this, MainActivity.class));
                    }
                    finish();
                    break;

            }
        }
    };


    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);

        initView();
    }

    private void initView() {
        mTextView=(TextView)findViewById(R.id.splash_text);
        handler.sendEmptyMessageDelayed(StaticClass.SHARE_SPLASH,2000);
        UtilsTools.setFont(this,mTextView);
    }

    private boolean isFirst(){
        boolean isFirst= ShareUtils.getBoolean(this,StaticClass.SHARE_IS_FIRST,true);

        //如果是第一次运行,isFirst为true,将其设置为false,意思是已经不是第一次运行了,并返回true,否则不是第一次运行返回false
        if(isFirst){
            ShareUtils.putBoolean(this,StaticClass.SHARE_IS_FIRST,false);
            return true;
        }else
        {
            return false;
        }
    }

    //禁止返回键
    @Override
    public void onBackPressed() {
       // super.onBackPressed();
    }
}

猜你喜欢

转载自blog.csdn.net/ayangann915/article/details/81460382