之前就打算写一个App启动页相关的文章的,一直拖到现在
!–小二,上代码–
public class SplashLoginActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//备注:注销引导界面
if(getFirst()){
recordFirst();
Intent intent1=new Intent(this,GuideActivity.class);
overridePendingTransition(R.anim.login_in,R.anim.login_out);
startActivity(intent1);
finish();
}else {
Intent intent2=new Intent(this,MainLoginActivity.class);
//overridePendingTransition(R.anim.login_in,R.anim.login_out);
startActivity(intent2);
finish();
}
}
private void recordFirst(){
SharedPreferences sp=getPreferences(MODE_PRIVATE);
SharedPreferences.Editor editor=sp.edit();
editor.putBoolean("First",false);
editor.apply();
}
private boolean getFirst(){
SharedPreferences sp=getPreferences(MODE_PRIVATE);
return sp.getBoolean("First",true);
}
}
这就是App的启动页面,判断是否是第一次安装App,如果是第一次安装App就跳转到引导页面,否则跳转到App的开始页面。引导页面完成之后也是调到App的开始页面。
我们平时写App的时候,当点击了App的图标之后会弹出一个空白页面,这个空白页面可能是白色的或者是黑色的,这取决于你的App的设置的主题样式。
当我们点击到那些成熟的App的图标是,app并没有立即启动,而是大概等了半秒钟App才启动,(取决于手机的性能,性能越好,这个时间段越短,这是一段耗时操作),此时启动的页面就是我们的App的开始页面,没有看到先前的空白页面了,那这个怎么实现呢?
我们来看这个SplashLoginActivity,它没有XML布局文件,再看它的Manifest文件。
<activity
android:name=".SplashLoginActivity"
android:screenOrientation="portrait"
android:theme="@style/SplashTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
可以看到这里设置了一个主题@style/SplashTheme。
<style name="SplashTheme" parent="LoginTheme">
<item name="android:windowBackground">@drawable/splash_login</item>
</style>
它引用了一个自定义样式。加载了一个Drawable 文件。
再看Drawable文件的代码
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<bitmap android:src="@drawable/splash_background"/>
</item>
</layer-list>
是一个layer-list层叠样式的Drawable文件,里面加载了一张App的启动的图片。
当我们再把App启动的时候就看到了,App并没有立即启动,而是等了很短一段时间再启动的。
二这段很短的时间里,App做了启动App所需要的加载的代码,展现在我们面前的就是那张启动图。这类似后台耗时操作,主线程展示UI加载。。。
好了,就这样。不要喷我。。。