3

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

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

    viewfinderBrush.SetSource(_photoCamera);
}

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

所以我的用户得到的是一个非常快的闪屏,他/她看不到它;第一页只需要那一小部分就可以体验到稍微滞后/缓慢。

我想改变它。让启动画面显示,直到一切都被初始化。这对我来说具有品牌化的额外好处,并为用户带来了良好的体验。

我试过这个:

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

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

4

1 回答 1

1

您的第一个选项应该可以工作 - 但要明白,在一次通过 UI 线程方法的过程中,UI 直到所有代码都被执行后才会真正更新。所以把它分成几块。

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

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

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

于 2013-07-10T17:34:58.287 回答