【问题标题】:Windows Phone 8 Live tiles Text & image updateWindows Phone 8 Live 磁贴文本和图像更新
【发布时间】:2013-10-22 18:33:15
【问题描述】:

我为 Windows Phone 8 创建了一个应用程序,并希望在我的应用程序中实现动态磁贴。我什至对动态瓷砖一无所知。我尝试了论坛中的许多示例。

但所有都是按钮的形式(如翻转,循环)如果我单击循环按钮,它将直接到开始屏幕以显示循环图块。

但是,我如何在我的应用程序中实现。我只想在用户固定到开始屏幕时显示生命图块。

任何人,帮我解决这个问题????

提前致谢。

【问题讨论】:

  • 任何人都知道动态磁贴和推送通知

标签: windows-phone-8 implementation live-tile


【解决方案1】:

您需要知道的第一件事是,Windows Phone 8 上的 LiveTiles 只能通过 C#/.NET 代码而不是 C++ 来实现。本机库无法访问 LiveTiles,因此您需要使用 .NET API。

下一步...如果您的应用是使用 DirectX 用 C++ 编写的,您需要将 XAML 与 Direct3D 互操作一起使用。这意味着您将拥有至少 2 个 VS 项目,一个使用 XAML/C#,另一个使用 C++。 LiveTiles 将通过回调和委托进行更新,将事件从 C++ 组件发送到 C# XAML 组件。 (如果您的应用仅使用 C#/.NET,则不需要任何回调)

还有一点:在 Windows Phone 上始终有效的唯一 LiveTile 类型是 FlipTile 类型。如果你使用标志性的瓷砖,WP8 通常会忽略颜色,只显示白色和透明度。

这是我的 C++ 组件中的一个 sn-p:

std:string dummyStd = "test string to display";
std::wstring dummyWs.assign(dummyStd.begin(), dummyStd.end());
Platform::String^ dummy = ref new Platform::String(separatorWs.c_str());

m_d3DInterop->OnLiveTilesUpdates(dummy);

以及来自 C# 组件的 sn-p:

public void OnLiveTilesUpdates(String s)
    {
        String szTitle = "title";
        String szText = s;
        ShellTile oTile = ShellTile.ActiveTiles.First();
        {
            FlipTileData oFliptile = new FlipTileData();
            oFliptile.Title = "";
            oFliptile.Count = 0;
            oFliptile.BackTitle = szText;

            oFliptile.BackContent = szTitle;
            oFliptile.WideBackContent = szTitle;

            oFliptile.SmallBackgroundImage = new Uri("/Assets/Tiles/FlipTileFrontSmall.png", UriKind.Relative);
            oFliptile.BackgroundImage = new Uri("/Assets/Tiles/FlipTileFrontMedium.png", UriKind.Relative);
            oFliptile.WideBackgroundImage = new Uri("/Assets/Tiles/FlipTileFrontHigh.png", UriKind.Relative);

            oFliptile.BackBackgroundImage = new Uri("/Assets/Tiles/FlipTileFrontMedium.png", UriKind.Relative);
            oFliptile.WideBackBackgroundImage = new Uri("/Assets/Tiles/FlipTileFrontHigh.png", UriKind.Relative);
            oTile.Update(oFliptile);
        }

请记住,您需要使用事件和委托/回调绑定代码的两个 sn-ps(仅当您将 XAML 与 Direct3D 互操作一起使用时)。 另外,如果你来到这里,你应该知道用于渲染的最佳组件是 DrawingSurface,因为 DrawingSurfaceBackgroundGrid 在 WP8 中存在一些 z-order 问题,并且在 WP8 中不支持 SwapChainBackgroundPanel。

PS:您还应该对辅助图块进行一些研究。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多