Android Splash启动页秒开方案,适配全面屏

您所在的位置:网站首页 微信恶搞图标启动页 Android Splash启动页秒开方案,适配全面屏

Android Splash启动页秒开方案,适配全面屏

2024-07-10 20:47| 来源: 网络整理| 查看: 265

Android 应用启动问题:

由于zygote进程创建新进程运行app是耗时的,所以页面上会先出现黑屏或白屏,然后再进入app的第一个页面。黑屏或白屏是系统添加再第一个启动页面前面的一个临时窗口(StartingWindow)。 启动页样式和解决方案:

一、从UI拿到的启动页,由一个纯色背景+若干图标组成,举例如下:页面上方一个logo 底部有一段话,背景是蓝色

在这里插入图片描述

这种启动页可以采用layer-list,设置背景颜色和图片,然后Activity的主题中windowBackground使用layer-list layer-list

style.xml

true @drawable/drawable_splash

清单文件中

SplashActivity中布局文件中设置背景和图片的位置,图片的位置一定要和layer-list 中设置的一样,否则背景和页面切换的时候会看出不同,有违和感,比如我上方的图标距离顶部都是120dp

当我们的手机是带有虚拟导航或者叫虚拟按键的设备时,我们可以重写SplashAcivity的onWindowFocusChanged方法,设置全屏和取消虚拟按键

@Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); if (hasFocus && Build.VERSION.SDK_INT >= 19) { View decorView = getWindow().getDecorView(); decorView.setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); } }

以上,基本可以解决Android P以下的适配问题 当程序运行再Android P和以上版本的时候,如果不做全面屏适配,会出现黑色状态栏现象,页面上下方向也有一些压缩,即使设置了全屏显示、statusBarColor为透明、 navigationBarColor为透明还是有问题 在这里插入图片描述

可以再onCreate中添加

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { WindowManager.LayoutParams lp = getWindow().getAttributes(); lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES; getWindow().setAttributes(lp); }

LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES可以保证图片不被压缩,可以延伸到刘海或者挖孔区域 除了这一个取值,还有其它取值,具体可以点击进去查看WindowManager的源码查看。

以上就是第一种情况和解决方案

二、和第一个场景一样

解决方案是直接设置背景,不给SplashActivity设置setContentView(R.layout.activity_splash); 直接在onCreate中跳转下一个Activity, 这个方案不用在Splash页面适配全面屏 layer-list和style和上一个方案一样

public class SplashActivity extends BaseFragmentActivity implements View.OnClickListener { private Button btnJump; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // setContentView(R.layout.activity_splash); initeMessage();//做其它初始化操作 goMainActivity();//如果之前有异步操作,此方法放在异步执行之后 } } 三、启动页背景复杂,不是纯色背景。可以采取多套图片适配

参考 这种启动页项目中遇到过一次,个人感觉还是不好适配,总有个别机型有问题

四、使用.9图

.9图制作 如果欢迎页整个使用.9图的话,有可能会因为图片过大,报错 Canvas: trying to draw too large(****bytes) bitmap 因为.9图片必须放在drawable目录下,图片太大会报错,如果图片放在mipmap-xhdpi或mipmap-hdpi等都不会报错,但是.9图必须放在drawable下,矛盾



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3