如何更改 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.xml
和icon_round.xml
的名称以匹配新的图标名称。如果launcher-foreground.png
被重命名,则更新对应icon.xml
中<foreground...>
的值。
摘要(Android)
-
将 mipmap 文件夹中的
png
替换为新图标
如果名称已更改,请更新 MainActivity.cs
中的 Icon
值
如果名称已更改,请更新 icon.xml
和 icon_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.png
和 launcher-foreground.png
。
在每个 mipmap 文件夹中替换这两个图像。我保留了相同的名称,但应该可以使用不同的名称。
如果您重命名launcher-foreground.png
,那么您必须更新icon.xml
和icon_round.xml
中的值(或其等效的新名称)。 <foreground...>
标签中的值引用了 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 中更改选项卡式页面指示器的颜色