如何使用相同的启动画面在WP7启动画面和第一页之间进行无缝转换

时间:2013-07-10 17:17:32

标签: windows-phone-7 windows-phone splash-screen

我正在开发一个Windows Phone应用程序。当我启动时,很快会显示启动画面,并显示MainPage.xaml。但是,在MainPage中,我使用通常的代码设置相机:

if (PhotoCamera.IsCameraTypeSupported(CameraType.Primary))
{
    _photoCamera.Initialized += OnCameraInitialized;
    // And other event handling

    viewfinderBrush.SetSource(_photoCamera);
}

这是简化的,但一切正常。我的问题是,这需要一段时间(mabye 0.5 - 1秒,我没有准确计时)。

所以我的用户得到的是一个快速的闪屏,他/她看不到它;和第一页只需要很小的一部分来体验它稍微滞后/慢。

我想改变它。在初始化所有内容之前,请先显示启动画面。这为我提供了品牌推广的额外好处,也为用户带来了不错的体验。

我试过这个:

  • 将我的启动画面作为图像添加到我的主页中,除了其他所有内容之外,并在所有内容初始化时隐藏它
  • 在我的MainPage上的弹出窗口中添加我的启动画面,并在初始化所有内容时隐藏弹出窗口(找到here

这个“有效”,但我可以在启动画面和我的图像/弹出窗口之间看到黑色闪光。有没有办法使这种过渡无缝?或者这是WP7中相当正常的行为吗?

1 个答案:

答案 0 :(得分:1)

您的第一个选项应该可以工作 - 但是要理解,在一次通过UI线程方法的行程中,UI实际上不会更新,直到所有代码都被执行。所以把它分解成碎片。

1)加载您的MainPage.xaml,默认情况下,启动画面会填充屏幕

2)为OnNavigatedTo和LayoutUpdated添加事件处理程序。当命中OnNavigatedTo时,将标志设置为true。在LayoutUpdated中,检查该标志是否为true,将flag设置为false,然后对上述方法运行Dispatcher.Invoke()调用。

3)删除图像或在完成该方法后将其设置为折叠。