强制让正方形应用图标显示的方法

8

我将为使用Android Studio制作的Android应用程序设置方形应用程序图标。

我使用文件->新建->矢量图标设置了自己的应用程序图标。
这将创建一个普通的和圆形的应用程序图标。

如果我复制并重命名(ic_launcher_round.png)方形应用程序图标,并在OnePlus Launcher上安装,我也会得到圆形图标。

我的徽标是方形的,所以看到它变成圆形真的很丑。
如何强制使用方形应用程序图标?这可能吗?

如果我只设置 android:icon="@mipmap/ic_launcher" 而不是在Manifest.xml中同时设置android:roundIcon="@mipmap/ic_launcher_round" ,则没有任何更改。

3个回答

8
当启动器决定将其变成圆形时,您的应用程序图标将被变成圆形。
“启动器”只是另一个应用程序,就像您的应用程序一样,但它不是您的应用程序——它与之完全分开,您通常无法影响与您的应用程序进程分离的任何进程,操作系统会禁止这样做。只有在利用操作系统提供的某种形式的进程间通信(IPC)时,您才能偶尔做到这样的事情,当然前提是您想要通信的进程也“愿意与您交谈”[利用相同的IPC形式允许其他进程更改其某些行为]。
此外,Android Studio向导的目的是帮助您生成可直接使用的可绘制文件,并节省在图像编辑器中制作这些可绘制文件所需的时间。
在XML清单文件中设置的任何可绘制集,都将在最后变成圆形,而不管它实际上的外观如何。我认为您不能期望任何当前可用的主要启动器应用程序将一些应用程序的图标显示为圆形,而将一些显示为正方形。这将极大地损害其用户体验。
恐怕您将不得不适应这种情况,将您的正方形应用程序标志变小,并留出一些空白区域,以便最终用户的启动器应用程序在此标志周围绘制一个圆圈。
在此处,您可以找到有关设计Android应用程序启动器图标的官方建议:https://material.io/guidelines/style/icons.html#icons-icons-for-android,并且在此处,您可以了解有关Android应用程序图标主题中最新方法的最新方法:自适应。任何其他类型的图标都可以视为“传统”,仅在针对API低于26的情况下用于兼容性原因。
编辑: 在评论部分,OP提到一些当前最新版本具有正方形图标的应用程序,结果实际上是开发人员的小型UX设计缺陷。
只是举个例子,我下载了OP提到的Bytecoin应用程序,在我的手机上,Android 7.0,它看起来像这样:Red object cut off 角落的红色物体已被切断。我认为我们可以假设,在Google Play上以正方形标志显示的所有其他应用程序(因为Google Play允许正方形标志)在安装在具有现代版本启动器的手机上时,都会看起来很糟糕,特别是api>=26。

谢谢您提供这么详细的解释!是否有一个列表可以查看不同尺寸所需的像素?如果需要,我将不得不在照片编辑器中手动调整圆形图标。由启动器圆角处理的应用程序图标真的很丑...但我还有一个问题。如何使“Bytecoin”应用程序或“DB Navigator”应用程序的图标保持带有圆角的正方形?启动器是任意设置的吗? - Hannes
@Hannes 请查看我的编辑答案。我添加了一些链接,可能已经回答了你的第一个问题,如果它们没有完全回答,我认为你可以自己谷歌并在几分钟内知道答案。关于你的第二个问题:抱歉,我不知道,而且恐怕我无法在不了解你的私人手机和启动器的情况下帮助你。 - Android developer
谢谢,我已将其标记为解决方案。我的一些用户使用的是一加3T手机和一加启动器。 - Hannes
我看到,其中一位用户还安装了战舰世界闪击战(https://play.google.com/store/apps/details?id=net.wargaming.wows.blitz)。它有一个二次方形的图标... - Hannes
在完美的世界中,操作系统制造商应该尊重开发者在之前版本中做出的品牌决策,而不是在无意义的一致性追求中践踏其他人的品牌。他们已经在启动器上强制使用圆形图标,现在又在应用商店里强制使用圆角正方形。这毫无意义。 - QuantumTiger
显示剩余2条评论

8
如果您的目标SDK是26,Android设备版本为8,则应用程序图标将是圆形。
其中一种实现方式是(不确定是否是正确/最佳方式):
在AndroidManifest.xml中,我必须设置
android:targetSdkVersion=“20”
<uses-sdk android:minSdkVersion=“16" android:targetSdkVersion=“20” />

android:roundIcon="@mipmap/ic_launcher_round" 表示设置应用程序在圆形图标形式下的图标资源。
<application android:hardwareAccelerated=“true” android:icon=“@mipmap/ic_launcher” android:label=“@string/app_name” android:roundIcon=“@mipmap/ic_launcher_round” android:supportsRtl=“true”>

确保ic_launcher_round图像为正方形。

我使用android studio生成自适应和传统的图标...

我删除了android studio生成的ic_launcher_round图像。

我将ic_launcher图像(通常是正方形图标)复制到ic_launcher_round中。

现在我的ic_launcher_round是正方形图标。

所有这些图像(ic_launcher_round.png、ic_launcher.png、icon.png)都是相同的图像。

完成更改后,重新构建应用程序。现在安装应用程序时,您应该看到正方形图标。


谢谢,将targetSDK设置为25恢复了我的正方形图标。可能不是正确的解决方案,但现在可以用了。 - Serdnad
4
从8月1日开始,谷歌将强制要求新应用程序的targetSdk设置为+26。参考资料:https://developer.android.com/distribute/best-practices/develop/target-sdk。 - gioravered
1
加入 android:roundIcon="@mipmap/ic_launcher_round" 对我有用 :) - Tom Hall

0

自 Android 8.0(奥利奥)以来

Android 设计应用程序图标的新方式现在在此处描述:

Android 8.0(API 级别 26)引入了自适应启动器图标,可以在不同设备型号上显示各种形状。

使用自适应图标时,启动器图标有两个层: 前景背景(请参见在 XML 中创建自适应图标)。

形状(圆形、正方形等)可能会因系统/启动器设置而异。

Android 8.0 之前

旧版图标可以通过以下方式生成: 创建旧版启动器图标


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接