天天看点

关于android启动页的一些优化建议

启动页也称之为闪屏页,就是在android应用第一次启动时展现的页面,值得一提的是大家不要理解为引导页(一般是应用首次安装或者更新的时候出现)

关于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这个网站先将图片压缩一下

继续阅读