如何修改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




