接下来实现闪屏页,如果是第一次运行程序,闪屏页跳转至引导页,如果不是,就跳转到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();
}
}