如何顺利导航到不同的全景项目

Posted

技术标签:

【中文标题】如何顺利导航到不同的全景项目【英文标题】:How to smoothly navigate to a different panorama item 【发布时间】:2013-07-31 20:42:46 【问题描述】:

在全景应用程序中,我添加了几种情况,用户被导航回某个全景项目。然而,这是在一个突然的动作中完成的。有没有一种方法可以让我通过某种形式的过渡更顺利地完成这个动作?或者类似的东西?

【问题讨论】:

【参考方案1】:

这段代码对我有用

SlideTransition slideTransition = new SlideTransition();
slideTransition.Mode = SlideTransitionMode.SlideRightFadeIn;
ITransition transition = slideTransition.GetTransition(panorama_main);
transition.Completed += delegate

    transition.Stop();
;
PanoramaItem pItem = (PanoramaItem)panorama_main.Items[3];
panorama_main.DefaultItem = pItem; 
transition.Begin();

【讨论】:

有点晚了,但出于兴趣,您如何在 XAML 中定义这些 SlideTransitions?【参考方案2】:

根据 Inder Kumar Rathore 在此页面中的回答和回答,我来做这个:

    #region navigation
    public enum MainPanoramaItem
    
        None = -1, Mag, Scan, Account, Lists, More, Help, MainPanoramaItemCount
    
    public void PanoramaNavigateTo(MainPanoramaItemitem)
    
        int count = (int)MainPanoramaItem.MainPanoramaItemCount;
        int toPosition = (int)item;
        int nowPosition = panorama.SelectedIndex;
        bool left = false;
        if(nowPosition > toPosition)
            int rightDelta = count - nowPosition + toPosition;
            int leftDelta = nowPosition - toPosition;
            left = rightDelta > leftDelta;
         else 
            int leftDelta = count - nowPosition + toPosition;
            int rightDelta = nowPosition - toPosition;
            left = rightDelta > leftDelta;
        

        SlideTransition slideTransition = new SlideTransition();
        slideTransition.Mode = left ? SlideTransitionMode.SlideLeftFadeOut : SlideTransitionMode.SlideRightFadeOut;
        ITransition transition = slideTransition.GetTransition(panorama);
        transition.Completed += delegate
        
            transition.Stop();
            SlideTransition slideTransitionIn = new SlideTransition();
            slideTransitionIn.Mode = left ? SlideTransitionMode.SlideLeftFadeIn : SlideTransitionMode.SlideRightFadeIn;
            ITransition transitionIn = slideTransitionIn.GetTransition(panorama);
            transitionIn.Completed += delegate  transitionIn.Stop(); ;

            panorama.SetValue(Panorama.SelectedItemProperty, panorama.Items[(int)item]);
            Panorama temp = panorama;
            LayoutRoot.Children.Remove(panorama);
            LayoutRoot.Children.Add(temp);
            LayoutRoot.UpdateLayout();

            transitionIn.Begin();
        ;
        transition.Begin();
    

    protected override void OnBackKeyPress(CancelEventArgs e)
    
        if (panorama.DefaultItem != panorama.Items[(int)PanoramaItem.Mag])
        
            PanoramaNavigateTo(PanoramaItem.Mag);
            e.Cancel = true;
        
    
    #endregion

在 MainPage.xaml.cs 它使用淡出然后淡入并将全景图的标题保留在其原始位置。 我还不确定它对实际应用程序的反应,因为我的应用程序很空。

【讨论】:

以上是关于如何顺利导航到不同的全景项目的主要内容,如果未能解决你的问题,请参考以下文章

如何在我的 Xcode Swift 项目的不同导航堆栈中从一个视图控制器屏幕切换到另一个?

如何在不同项目中的视图/视图模型之间导航

如何在一个 android studio 项目中为两种不同类型的用户提供两种不同的导航抽屉活动?

如何从另一个 xaml- 文件中获取 WP7 全景内容?

iOS 跳转到不同的视图

如何将listview项目链接到android中的不同活动?