1

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

平铺定义 xml

目前,这些实时文本图块具有从应用清单中提取的纯色背景颜色 #000000(黑色)。最新版Windows 10手机版有设置使用开始屏幕磁贴透明度;它提供了很好的效果,但仅适用于 Microsoft 实用程序。请参阅下面的屏幕截图。不幸的是,我无法弄清楚如何让我的文本图块的背景透明/半透明。我希望 Windows 可以调整 alpha 通道/不透明度/透明度;但是,事实并非如此。另外,我可以在清单中设置的背景图块颜色是 RGB 而不是 ARGB;它不允许指定 Alpha 通道值。有谁知道非 Microsoft 应用程序是否可以在实时文本磁贴上具有半透明磁贴背景?如果是这样,

半透明动态磁贴截图

4

1 回答 1

1

正如 Thomas 在评论中已经提到的,您可以在 Package.appxmanifest 中更改磁贴的背景颜色。在代码中,它BackgroundColor="transparent"位于VisualElements标签中:

<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 应用程序中一样,您可以使用以下内容更改BackgroundColorSecondaryTile的代码:

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 设置为透明会导致应用程序列表和商店列表中的应用程序图标也是透明的。

于 2016-11-24T23:36:45.483 回答