通用 Windows Win 10 应用 (UWP) 中的半透明动态磁贴 mobile/phone

Translucent Live Tiles In Universal Windows Apps (UWP) on Win 10 mobile/phone

我在 Windows 10 应用商店(世界时钟)中有一个 UWP 应用。这个应用程序允许用户固定显示每分钟更新的文本的实时辅助磁贴(以显示世界各地不同城市的当前时间)。这些实时文本图块使用 XML 创建为 "adaptive tiles",如下所示:

目前,这些实时文本图块具有从应用程序清单中提取的纯色背景颜色 #000000(黑色)。 Windows 10 for phone 的最新版本有一个设置使用开始屏幕平铺透明度;它提供了不错的效果,但仅适用于 Microsoft 实用程序。请参见下面的屏幕截图。不幸的是,我不知道如何让我的文本图块的背景为 transparent/translucent。我希望 Windows 调整 alpha channel/opacity/transparency;但是,它没有。另外,我可以在清单中设置的背景图块颜色是 RGB 而不是 ARGB;它不允许指定 alpha 通道值。有谁知道非 Microsoft 应用程序是否可以在实时文本图块上具有半透明图块背景?如果是这样,关于如何实现这种效果的任何建议(微软半透明背景和我的不透明背景图块如下所示)?

正如 Thomas 在评论中已经提到的那样,您可以在 Package.appxmanifest 中更改图块的背景颜色。在代码中,它是 VisualElements 标签中的 BackgroundColor="transparent"

<Applications>
  <Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="MyApp.App">
    <uap:VisualElements DisplayName="MyApp" Square150x150Logo="Assets\Square150x150Logo.png" Square44x44Logo="Assets\Square44x44Logo.png" Description="MyApp" BackgroundColor="transparent">

如果你想在你的应用程序中使用它,就像在 Microsoft 应用程序中一样,你可以在代码中更改 SecondaryTileBackgroundColor

public static async Task ChangeSecondaryTilesBackground(bool transparent) {
    IReadOnlyList<SecondaryTile> tiles = await SecondaryTile.FindAllAsync();

    foreach (SecondaryTile tile in tiles) {
        if (transparent) 
            tile.VisualElements.BackgroundColor = Windows.UI.Colors.Transparent;
        else 
            tile.VisualElements.BackgroundColor = Windows.UI.Colors.Green; // Set to your color

        await tile.UpdateAsync();
    }
}

在此处更新主要图块有点复杂,因为您需要为图块创建一个新的 Xml 内容,其背景图像仅包含您的颜色,并将其设置为 tileUpdater.Update(new TileNotification(xmlContent));

请注意,在 PC 上,用户可以通过右键单击磁贴来停用磁贴,然后将使用 Package.appxmanifest 中的任何设置。当您的 TileNotification 内容不正确或加载失败时,也会显示 appxmanifest 中的默认内容。

另一种方法(例如,如果品牌对您来说很重要)是将 BackgroundColor 保留在 appxmanifest 中,如果用户想要一个仅带有应用程序图标的透明动态磁贴,只需创建一个复制主磁贴的 SecondaryTile应用程序图标。例如,这就是我在 PitlaneOne 中完成的方式。 我这样做的原因是将 appxmanifest 中的 BackgroundColor 设置为透明将导致应用程序列表和商店列表中的应用程序图标也透明。