关于android启动页优化建议

本文探讨了Android启动页的优化问题,包括解决黑白闪烁现象,避免按Back键后应用自动启动,以及处理按Home键后启动页的延迟问题。通过设置主题背景色、合理管理Handler以及在onStop()中移除回调,可以显著提升用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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);
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值