关于android启动页优化建议

    xiaoxiao2021-03-26  29

    android启动页优化

           启动页也称之为闪屏页,就是在android应用第一次启动时展现的页面,但它并不是引导页(一般是应用首次安装或者更新的时候出现的页面)。

    启动页黑白闪烁:

            在刚启动应用时,往往会出现黑白闪屏现象,这是由于Them初始化默认颜色就是黑/白色,我们可以先给主题设置与启动页背景色相同的背景色,而启动页采用纯背景+logo形式,而且logo大小不宜超过1M(防止oom),可先到tinypng网站对.png或.jpg格式图片压缩处理,这样在项目启动时就不会有黑/白闪屏了;

    <style name="AppSplash" parent="android:Theme.Light.NoTitleBar"> <item name="android:windowBackground">@drawable/ic_launcher</item> <item name="android:windowNoTitle">true</item> <item name="android:windowFullscreen">true</item> <item name="android:windowContentOverlay">@null</item> </style>

    延迟启动之按back后自动启动:

           另外启动页后进入首页的延迟,不管采用handler还是countDownTimer等,都需要在回退键方法onBackPressed()中取消掉延迟跳转操作,这样当用户刚启动app后直接按back键,而导致该app过会儿自动启动问题;

    其实这个界面的实现很简单,代码量也很少,主界面代码:

    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键,只能通过杀死进程的方式退出了。

    延迟启动之按Home键后自动启动:

    方法与上边的相同只要这样:

    @Override protected voidonStop() {           super.onStop();           mhandler.removeCallbacks(myRunnable); }

    转载请注明原文地址: https://ju.6miu.com/read-659864.html

    最新回复(0)