启动页也称之为闪屏页,就是在android应用第一次启动时展现的页面,值得一提的是大家不要理解为引导页(一般是应用首次安装或者更新的时候出现)
其实这个界面的实现很简单,代码量也很少
- 第一步,配置AndroidManifest文件,将他作为应用入口
<activity
android:name=".activity.StartActivity"
android:screenOrientation="portrait"
android:theme="@style/StartTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
- 第二步,配置xml文件,设置background或者放置一个ImageView设置scaleType都行,这里我采用最简单的方式
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:background="@mipmap/start_jianshu"
android:layout_width="match_parent"
android:layout_height="match_parent">
</LinearLayout>
- 第三步,设置代码,只需要做一个延迟跳转到登录或者是主界面就行了
public class Start1Activity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
startActivity(new Intent(StartActivity.this,MainActivity.class));
}
}, 3000);
}
}
这样写启动页,是存在很大的问题的
- 问题场景:当用户误点了你的应用图标,想赶紧撤回去,于是点击了back键,过了几秒钟我在其他的应用浏览,突然跳转到你的应用 这种用户体验相当不好吧
- 问题分析:虽然你的activity销毁了,你的handler却还存在,虽然你已退出启动页,延迟加载的代码依然会执行
- 优化后代码,当用户点击back键,移除handler回调
public class StartActivity extends AppCompatActivity {
private Handler handler;
private MyThread thread;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start);
ButterKnife.bind(this);
handler = new Handler();
thread = new MyThread();
handler.postDelayed(thread, 3000);
}
private class MyThread implements Runnable {
@Override
public void run() {
startActivity(new Intent(StartActivity.this, MainActivity.class));
finish();
}
}
@Override
public void onBackPressed() {
super.onBackPressed();
handler.removeCallbacks(thread);//移除回调
}
}
当然,这不是唯一的处理方案,类似,爱奇艺,网易新闻这种就稍微流氓一些,当用户误点以后,是不允许用户返回的,是直接禁用了back键,只能通过杀死进程的方式退出了。
针对启动页图片选择的建议
当然,这个问题不是我们开发能决定的,图一般都是设计给的,android加载大图的时候容易oom,在启动页加载大图,会导致启动短暂的黑屏,白屏,增加内存消耗,低端机上可能直接oom,使用纯背景加logo的方式,会比直接用一张大图好得多,即使真的需要用图片,也不要动不动几百K或者达到1M以上的图片,可以使用较小一点分辨率,可以通过tinypng这个网站先将图片压缩一下
欢迎转载,转正请注明原文出处