android启动页防止黑白屏和启动页图片变形

时间:2024-05-18 22:24:13

问题:
现在我们的程序功能开发的差不多了,现在正在做优化,打开应用的时候会有黑白全屏界面出现,然后才出现我们的启动页展示的图片,很多的应用都不会出现这种情况,以前我就发现过这个问题,但是一直在做功能,没时间整这个.现在我这边的解决办法分享给大家,废话太多,下面直接开始
1.创建三个LaunchTheme
第一个放在values中(这个文件项目中有,直接把下面的代码复制一下放到里面就行了)
android启动页防止黑白屏和启动页图片变形android启动页防止黑白屏和启动页图片变形

<style name="LaunchTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowBackground">@drawable/icon_launch3</item>
    <item name="android:windowFullscreen">true</item>
</style>

第二个LaunchTheme在编写之前需要在项目中创建文件夹values-v21并在该文件夹下创建styles.xml下面是代码

android启动页防止黑白屏和启动页图片变形

<style name="LaunchTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowBackground">@drawable/icon_launch3</item>
    <item name="android:windowFullscreen">true</item>
    <!--不让windowBackground延申到navigation bar区域-->
    <item name="android:windowDrawsSystemBarBackgrounds">false</item>
</style>

第三个LaunchTheme在编写之前需要在项目中创建文件夹values-v28并在该文件夹下创建styles.xml下面是代码

<style name="LaunchTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowBackground">@drawable/icon_launch4</item>
    <item name="android:windowFullscreen">true</item>
    <!--不让windowBackground延申到navigation bar区域-->
    <item name="android:windowDrawsSystemBarBackgrounds">false</item>
    <!--适配Android P刘海屏-->
    <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
</style>

把上面的图片(icon_launch3我放的是1080*1920 )  (icon_launch4为1080*2240) 这两个尺寸的图片

 

最后在清单文件的启动页引用就行了

 

<activity android:name=".activity.LaunchActivity"

android:screenOrientation="portrait" android:theme="@style/LaunchTheme">

<meta-data android:name="android.notch_support" android:value="true"/>

<intent-filter>

<action android:name="android.intent.action.MAIN"/>

<category android:name="android.intent.category.LAUNCHER"/>

</intent-filter> </activity>

 

 

这样在启动项目的时候 ,会把黑白屏替换掉,并且我们指定了版本,在打开应用的时候 v28就是android9.0的手机就会去找咱们创建的values-v28文件的主题样式.如果想适配更多机型多添加几个文件多塞几张图片就行了,图片有时候太大,那是必然的,可以用https://tinypng.com/这个把图片压缩下,这样适配就是占体积,但是省事儿.还有一种方法就是创建layer-list,这个网上也有很多,把一张图片分开来自己布局,这中方法比上面这种可以省好多空间.