从填充到捕捉视觉状态时的首选行为

Posted

技术标签:

【中文标题】从填充到捕捉视觉状态时的首选行为【英文标题】:Preferred behavior when going from filled to snapped Visual State 【发布时间】:2013-03-04 17:17:22 【问题描述】:

我目前正在实施一些快照视图,但遇到了一个我找不到答案的问题。也许你的美丽心灵可以帮助我。

当我将我的应用程序从填充状态拖到捕捉状态时,大约 1 - 1.5 秒的时间段内,旧的“填充”视图仍会显示在捕捉的视图空间中。不好看!我想应该在这里应用一个标准行为。我是否显示启动画面?我是否在项目中设置动画(如果是,我应该监听什么事件)?

感谢大家的帮助!

编辑:这是我经历过这种滞后的一个观点的一些简化代码 - 搜索结果页面:

<Grid x:Name="LayoutRoot">
  <Grid x:Name="FullViewGrid">
    <!-- Two GridViews containing up to 27 items each (not very advanced) -->
  </Grid>
  <Grid x:Name="SnappedViewGrid">
    <!-- Two ListViews doing the same thing, with different item templates -->
  </Grid>
</Grid>

基本上,我正在实现我自己的 VS2012 中给出的标准搜索合同模板的旋转。在 UI 中呈现这些更改时,我感觉 CPU 压力过大 - 这就是为什么事情进展不太顺利的原因。

【问题讨论】:

在我看来,最常见的是对旧视图有 1-1.5 秒的视图...但是,这并不意味着您不应该做更好的事情:)。您可以处理窗口的SizeChanged 事件并可能隐藏当前视图...有关检测视图状态更改(例如更改为 Snapped)的更多详细信息,请参阅***.com/questions/10362566/…。 很好的答案 - 谢谢 :) 但是,我什么时候知道什么时候可以重新制作动画?还有类似“RenderingFinished”的事件吗? 【参考方案1】:

是的,所以这是你做错的事情。 SnapView 没有这样的延迟。如果您有兴趣,可以查看我的 SnapView 演练:http://blog.jerrynixon.com/2012/12/walkthrough-implementing-snapview-in.html

如果没有来自您的应用的代码示例,这是我目前能提供的最好的。但希望这将是您为 SnapView 走上正确道路所需要的一切。祝你好运!

【讨论】:

虽然我非常愿意接受我的代码远非完美的建议,但我看到很多应用程序都有这种行为 - 包括一些来自 Microsoft 的应用程序。你的视频博客内容丰富,但我已经在做同样的事情了。我的问题是它不会立即切换 - 可能是由于 MS 使用的渲染代码存在潜在问题。为了更好地解释我的情况,我在原始帖子中添加了一些代码。 所以,我的建议是你从你的视图状态中提取故事板并尝试在外面运行它,测试故事板本身是否有延迟。您的故事板很可能是原因(但视图状态转换不太可能是原因,因为它不是其他应用程序中的原因)。这也是提高应用在 ARM 上的性能的好习惯(在外部测试故事板)。如果它在视图状态之外超级快,那么......呃。让我们希望你能找到一些显而易见的东西。

以上是关于从填充到捕捉视觉状态时的首选行为的主要内容,如果未能解决你的问题,请参考以下文章

国科大人工智能学院《计算机视觉》课 —运动视觉—运动表达和行为识别

国科大人工智能学院《计算机视觉》课 —运动视觉—运动表达和行为识别

国科大人工智能学院《计算机视觉》课 —运动视觉—运动表达和行为识别

原生JS和JQuery代码编写窗口捕捉函数和页面视觉差效果(scroll()offsetTop滚动监听的妙用)

计算机视觉中的注意力机制研究

基于人眼视觉模型,实现码率质量成本的最优均衡