Win 10手机/手机上的通用Windows应用程序(UWP)中的半透明实时互动程序

Win 10手机/手机上的通用Windows应用程序(UWP)中的半透明实时互动程序,uwp,windows-10-mobile,live-tile,secondary-live-tile,Uwp,Windows 10 Mobile,Live Tile,Secondary Live Tile,我在Windows 10应用商店(世界时钟)中有一个UWP应用程序。该应用程序允许用户锁定实时二级互动程序,该程序显示每分钟更新的文本(以显示世界各地不同城市的当前时间)。这些实时文本互动程序使用如下所示的XML创建为“自适应互动程序”: 目前,这些实时文本互动程序具有从应用程序清单中提取的纯色背景#000000(黑色)。 最新版本的Windows 10 for phone有一个设置“使用开始屏幕平铺透明度”;它提供了很好的效果,但仅适用于Microsoft实用程序。请参见下面的屏幕截图。不幸

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

目前,这些实时文本互动程序具有从应用程序清单中提取的纯色背景#000000(黑色)。 最新版本的Windows 10 for phone有一个设置“使用开始屏幕平铺透明度”;它提供了很好的效果,但仅适用于Microsoft实用程序。请参见下面的屏幕截图。不幸的是,我不知道如何允许文本平铺的背景是透明/半透明的。我希望窗口能够调整alpha通道/不透明度/透明度;但事实并非如此。另外,我可以在清单中设置的背景瓷砖颜色是RGB而不是ARGB;它不允许指定alpha通道值。有人知道非Microsoft应用程序是否可以在实时文本互动程序上使用半透明的互动程序背景吗?如果是这样的话,有没有关于如何实现这种效果的建议(下面显示的是Microsoft半透明背景和我的不透明背景图)


正如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">
在这里更新主磁贴有点复杂,因为需要为磁贴创建一个新的Xml内容,背景图像仅包含您的颜色,并使用
tileUpdater.Update(新的TileNotification(xmlContent))

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

另一种方法(例如,如果品牌对你很重要)是在appxmanifest中保留背景色,如果用户希望只使用带有应用图标的透明实时互动程序,只需创建一个复制主应用图标的辅助互动程序。例如,我在皮特拉尼翁就是这样做的。 我这样做的原因是,将appxmanifest中的BackgroundColor设置为透明将导致应用程序列表和商店列表中的应用程序图标也透明。

你说的“从应用程序清单中提取”是什么意思?在我的默认清单中,背景设置为
BackgroundColor=“transparent”
,您可以试试吗?
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();
    }
}