如何更改 Xamarin.Forms 中的应用程序图标?

Posted

技术标签:

【中文标题】如何更改 Xamarin.Forms 中的应用程序图标?【英文标题】:How to change application icon in Xamarin.Forms? 【发布时间】:2016-10-23 01:57:00 【问题描述】:

我替换了所有地方的所有图像(我的意思是在可绘制文件夹和所有 Windows 资产文件夹和 ios 资源文件夹中),但它仍然向我显示应用程序的默认 Xamarin 图标。我也试过这段代码,但它似乎也不起作用。谁能告诉我解决办法?

[assembly: Application(Icon = "@drawable/icon")]

【问题讨论】:

此代码仅适用于 android。确保你已经清理了你的项目并重建了它。从您的模拟器/设备中删除应用程序并让它重新安装也可能会有所帮助。 它不适用于我的应用程序中的 Android。我的 Android 设备显示默认的 Xamarin 图标(平板电脑和手机)。我尝试重新安装,但我的自定义图标仍然没有出现。 这很奇怪,如果你已经替换了所有应该可以工作的图标。对于 Android,检查 resources 下的每个子文件夹,对于 iOS,检查 resources 下的每个文件。 我不知道为什么,对于我的生活,Visual Studio 不添加一个简单的 UI 功能来更改应用程序图标!?几乎每个应用程序都必须这样做,我不明白为什么这个过程到今天如此复杂 【参考方案1】:

更新图标和名称 (Android)

如果您更改了图标文件名,请确保更新MainActivity.cs 中的Icon 引用:

[Activity(Label = "MyName", Icon = "@mipmap/myicon", Theme = "@style/MainTheme"]    
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
 

您还应该更新mipmap-anydpi 文件夹中icon.xmlicon_round.xml 的名称以匹配新的图标名称。如果launcher-foreground.png被重命名,则更新对应icon.xml<foreground...>的值。

摘要(Android)

    将 mipmap 文件夹中的 png 替换为新图标 如果名称已更改,请更新 MainActivity.cs 中的 Icon 值 如果名称已更改,请更新 icon.xmlicon_round.xml 的名称(或创建新副本) 如果 launcher-foreground.png 的名称已更改,则更新 icon.xml 中的值。例如:
    <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
      <background android:drawable="@color/my_launcher_background"/>
      <foreground android:drawable="@mipmap/my_launcher_foreground"/>
    </adaptive-icon>
    
    如果名称未更改并且您已清理并重新构建项目,但新图标仍未部署:从 Android 项目目录中删除 obj 文件夹

不更新时的详细信息和问题(Android)

Xamarin Forms/Android 在每个 mipmap 文件夹(mipmap-mdpi、mipmap-hdpi、mipmap-xhdpi 等)中放置 2 个图标 - icon.pnglauncher-foreground.png

在每个 mipmap 文件夹中替换这两个图像。我保留了相同的名称,但应该可以使用不同的名称。

如果您重命名launcher-foreground.png,那么您必须更新icon.xmlicon_round.xml 中的值(或其等效的新名称)。 &lt;foreground...&gt; 标签中的值引用了 icon/png。因此,如果 launcher-foreground.png 更新为 my_launcher-foreground.png,这应该会反映在 icon.xml 中(请参阅上面摘要中的第 4 步)。

如果图标即使在清理/重建后仍然没有更新,则可能是原始/默认图标仍然存在于 Android 项目 obj 文件夹中。解决方法是从Android项目目录中删除obj文件夹。


iOS

对于 iOS,请参阅Managing Icons with Asset Catalogs。下面提供了来自链接页面的摘要:

对于图标,可以将特殊的AppIcon 图像集添加到应用项目中的Assets.xcassets 文件中。

要使用资产目录,请执行以下操作:

    在解决方案资源管理器中双击 Info.plist 文件。 单击 Visual Assets 选项卡,然后单击 App Icons 下的 Use Asset Catalog 按钮。 从解决方案资源管理器中,展开资产目录文件夹。 双击媒体文件在编辑器中打开它。 在“属性资源管理器”下,开发人员可以选择所需的不同类型和大小的图标。 单击给定的图标类型并选择所需类型/大小的图像文件。 单击“打开”按钮将图像包含在项目中并将其设置在 xcasset 中。

MacOS

MacO 的指南是Application icon for Xamarin.Mac apps。您需要考虑以下步骤:

    所需的图像大小和文件名 打包图标资源 使用图标

在上面的链接文档中有详细说明。

【讨论】:

MacOS 怎么样?【参考方案2】:

对于 Android,请尝试像这样设置图标应用:

[Activity(Icon = "@drawable/icon")]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity

     .....

确保您已更改所有可绘制文件夹(drawable、drawable-hdpi、drawable-xhdpi 和 drawable-xxhdpi)上的所有图标图像。

对于 iOS,我喜欢使用 Asset Catalogs 设置应用图标和启动画面,您可以在此处找到如何使用它的指南:

https://developer.xamarin.com/guides/ios/application_fundamentals/working_with_images/app-icons/

【讨论】:

根据this,应用图标应该放在@mipmap/文件夹中,而不是@drawable/【参考方案3】:

对于 Visual Studio 中的 iOS...

Step1:从https://appicon.co/生成所有应用图标

步骤 2:在解决方案资源管理器中,在 iOS 项目下,展开“资产目录”并双击“资产”。您可以更改现有的“AppIcon”图标或添加新资产并附加图标。

这是您添加新资产的方式...

Step3:在解决方案资源管理器中,在 iOS 项目下,双击 Info.plist。 转到“Visual Assets”选项卡,单击“App Icons”并将“Source”更改为 您刚刚创建的资产。

完成。

希望这对某人有所帮助!

【讨论】:

不知何故,我不记得 Visual Studio 2019 是如何为我生成整套缩放位图的。仍在试图弄清楚我做了什么,但是您提到的 URL 中的那个生成工具似乎已集成到 VS2019 中。 这绝对是为我做的,非常感谢! :)。我发现在将存档解压缩到临时文件夹后,我实际上能够“导入...”在您链接的网站上制作的资产(但我必须先将现有的资产重命名为“OldAppIcons”)。太棒了!【参考方案4】:

答案已弃用

如果我理解正确的话,对于 iOS 项目:Properties -> iOS Application

对于 Android:属性 -> Android 清单

【讨论】:

不幸的是,我只能控制 Android 上的解决方案,并且我有您显示的所需设置,但仍然有默认图标,而不是我的。我尝试使用相同和不同的文件名(icon.png/ic_launcher.png),但都没有成功。 这个答案现在可能已经过时了,iOS Application 左窗格在我当前版本的 VSforMac 中不再存在。 VisualStudio for Windows 可能也会发生同样的情况?【参考方案5】:

我遇到了同样的问题,但以下帮助解决了它:

    转到 MainActivity.cs(在解决方案资源管理器中) 查找显示 'Icon =' 的位置 更改图标的位置,但不要包含扩展名,即 jpg、png 等(例如 Icon = "@drawable/weatherIcon") 保存文件 重新启动调试(屏幕右上角的停止和暂停图标旁边的小重新启动图标)

如果您在此过程中遇到任何问题,请查看从 02:47 开始的这段简短视频 https://youtu.be/5g8lWPQZFxs?t=167。这对我帮助很大。

【讨论】:

【参考方案6】:

尝试替换 iOS 项目 > 属性 > iOS 应用程序 > Iphone Icons/iPad Icons 上的所有图标。 我改变了所有这些,设置图标确实改变了。只需在 Resouces 上插入图像即可创建图像。

【讨论】:

【参考方案7】:

今天测试了一下,发现只需要更改所有可绘制文件夹中的图标图像,

              drawable,
              drawable-hdpi,
              drawable-xhdpi
              drawable-xxhdpi.

根据设备的不同,它会使用不同的图像。对我来说,我使用了“Visual Studio Android Emulator”:

              - 5" KitKat(4,4) XXHDPI Phone (Android 4,4 - API 19)

不需要在模拟器中卸载并重新安装应用程序,它在启动项目后自行更新,并在菜单构建/配置管理器中选中“构建”。

除此之外,没有进行任何代码更改!

【讨论】:

“可绘制文件夹”是什么意思?【参考方案8】:

如果您替换了 Icon.png 并且设备上仍然没有任何更改,则将“复制到输出目录”属性更改为“如果更新则复制”或“始终复制”。 那是我的解决方案。

【讨论】:

【参考方案9】:

所有这些解决方案都很棒,但是

最简单的方法:

您现在可以使用ResizetizerNT 的 nuget 包并上传一个 svg 文件并将 IsAppIcon 设置为 true。这应该会产生所需的一切。 如果现有的应用程序图标是 icon.png,只需将 svg 命名为 icon.svg,它应该会自动工作。

或者,您还可以为背景添加另一个 SVG 以支持 Android 上的自适应图标。

上下文:ResizetizerNT 由 Xamarin.Forms/MAUI 工程经理 Jonathan Dick 创建

【讨论】:

以上是关于如何更改 Xamarin.Forms 中的应用程序图标?的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin.Forms 无法更改本地设备上 Xamarin.iOS 中的应用程序图标

我可以以编程方式更改 Xamarin.Forms 中的 styles.xml 吗?

如何在 Xamarin Forms 中更改选项卡式页面指示器的颜色

如何使用 Xamarin Forms 更改键盘的习惯用法

如何在单击 xamarin.forms.maps iOS c# 时更改 pin 图标

如何更改 Xamarin.Forms UWP 应用程序的强调色?