You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何修改Android 12启动页(Splash screen)的图标形状,将圆角图标改为矩形?

修改Android 12启动页图标为矩形的实现方法

嘿,刚好之前做过类似的需求,Android 12及以上系统的启动页(Splash Screen)默认会给图标加上圆角蒙版,要改成矩形其实挺简单的,跟着下面的步骤一步步来就能搞定:

1. 配置启动页主题,取消默认圆角蒙版

Android 12的启动页是通过Theme.SplashScreen主题来控制的,我们需要在主题里覆盖系统默认的圆角裁剪规则。

首先,在res/values-v31/themes.xml(如果需要兼容低版本,也可以在res/values/themes.xml中添加)中修改你的启动页主题:

<style name="Theme.App.SplashScreen" parent="Theme.SplashScreen">
    <!-- 设置你的矩形启动图标 -->
    <item name="windowSplashScreenIcon">@drawable/rectangular_splash_icon</item>
    <!-- 自定义矩形蒙版,替换系统默认的圆角蒙版 -->
    <item name="windowSplashScreenIconTransformationMask">@drawable/rect_mask</item>
    <!-- 可选:设置图标背景色(如果你的图标有透明区域) -->
    <item name="windowSplashScreenIconBackgroundColor">@color/your_preferred_color</item>
    <!-- 设置启动页整体背景色 -->
    <item name="android:windowBackground">@color/your_preferred_color</item>
    <!-- 指定启动完成后跳转的主主题 -->
    <item name="postSplashScreenTheme">@style/Theme.App.Main</item>
</style>

然后在res/drawable目录下创建rect_mask.xml,这是一个纯矩形的蒙版文件:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="@android:color/white" />
    <!-- 强制设置圆角为0,确保是纯矩形 -->
    <corners android:radius="0dp" />
</shape>

2. 准备符合要求的矩形图标资源

确保你的rectangular_splash_icon是纯矩形的图标,没有自带圆角,并且按照Android图标尺寸规范准备多分辨率版本:

  • mdpi: 48x48dp
  • hdpi: 72x72dp
  • xhdpi: 96x96dp
  • xxhdpi: 144x144dp
  • xxxhdpi: 192x192dp

3. 在启动Activity中启用SplashScreen API

在你的启动Activity的onCreate方法中,必须在super.onCreate()之前调用installSplashScreen(),代码示例(Kotlin):

class SplashActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        // 关键:必须在super.onCreate之前调用
        val splashScreen = installSplashScreen()
        super.onCreate(savedInstanceState)
        
        // 这里可以添加启动页的停留逻辑(比如等待数据加载)
        // ...
        
        // 跳转主页面
        startActivity(Intent(this, MainActivity::class.java))
        finish()
    }
}

如果用Java的话:

public class SplashActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        SplashScreen splashScreen = SplashScreen.installSplashScreen(this);
        super.onCreate(savedInstanceState);
        
        // 跳转逻辑
        startActivity(new Intent(this, MainActivity.class));
        finish();
    }
}

4. 验证效果与排坑

运行应用后,你应该能看到矩形的启动页图标了。如果还是显示圆角,检查这几点:

  • 确认项目的targetSdkVersion >= 31
  • 确认启动Activity的主题已经设置为Theme.App.SplashScreen
  • 检查rect_mask.xml的圆角是否确实设为0dp
  • 确认图标本身没有自带圆角

另外,如果需要兼容Android 11及以下版本,原来的启动页逻辑可以保留,系统会自动为Android 12+设备使用新的SplashScreen API。

内容的提问来源于stack exchange,提问作者binjal prajapati

火山引擎 最新活动