windows phone app 添加启动页面介绍新功能_html/css_WEB-ITnose
方案1: 利用 Panorama或者 pivotpage
1. 重写panorama page, 使其达到全屏
public class PanoramaFullScreen : Panorama { protected override System.Windows.Size MeasureOverride(System.Windows.Size availableSize) { availableSize.Width += 48; return base.MeasureOverride(availableSize); } }
2. 去掉 title 和 header,调整好margin
<phone:PanoramaItem> <Grid Canvas.ZIndex="-1" Margin="-66,-40,-55,0" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Width="591"> <Image Stretch="Fill" Source="/Images/screen1.jpg" VerticalAlignment ="Stretch" HorizontalAlignment="Stretch" Margin="54,0,54,0"/> </Grid> </phone:PanoramaItem>
3. 在codebehind 中控制页面跳转
private TouchPoint first; private const int DetectRightGesture = 20; private int startIndex = 0; private readonly int endIndex; public WhatsNewView() { InitializeComponent(); endIndex = MyStartScreen.Items.Count - 1; MyStartScreen.IsHitTestVisible = false; MyStartScreen.IsEnabled = false; Touch.FrameReported += Touch_FrameReported; TouchPanel.EnabledGestures = GestureType.HorizontalDrag; } private void Touch_FrameReported(object sender, TouchFrameEventArgs e) { try { TouchPoint mainTouch = e.GetPrimaryTouchPoint(this); if (mainTouch.Action == TouchAction.Down) first = mainTouch; else if (mainTouch.Action == TouchAction.Up && TouchPanel.IsGestureAvailable) { if (mainTouch.Position.X - first.Position.X < -DetectRightGesture) { if (startIndex < endIndex) { MyStartScreen.SlideToPage(startIndex + 1, SlideTransitionMode.SlideLeftFadeOut); startIndex++; } else { NavigateToNextPage(); } } else if (mainTouch.Position.X - first.Position.X > DetectRightGesture) { if (startIndex > 0) { MyStartScreen.SlideToPage(startIndex - 1, SlideTransitionMode.SlideRightFadeOut); startIndex--; } } } } catch { } } private void ButtonBase_OnClick(object sender, RoutedEventArgs e) { NavigateToNextPage(); } private void NavigateToNextPage() { NavigationService.Navigate(new Uri("/Views/LoginPage.xaml", UriKind.Relative)); } protected override void OnNavigatedFrom(NavigationEventArgs e) { while (NavigationService.BackStack.Any()) { NavigationService.RemoveBackEntry(); } }
4. 补充: 拓展panorama 方法,使其跳转附带动画
public static void SlideToPage(this Panorama self, int item, SlideTransitionMode slideMode) { var slideTransition = new SlideTransition { }; slideTransition.Mode = slideMode; ITransition transition = slideTransition.GetTransition(self); transition.Completed += delegate { self.DefaultItem = self.Items[item]; transition.Stop(); }; transition.Begin(); }
不足:
SlideTransitionMode SlideTransitionMode支持动画有限,一般达不到预期效果
方案2:
将所有图片水平排列,根据手势通过左右偏移来控制显示
<Canvas> <StackPanel x:Name="Slider" Canvas.Left="0" Orientation="Horizontal"> <Image Source="/Images/screen1.jpg" Stretch ="UniformToFill"/> <Image Source="/Images/screen2.jpg" Stretch ="UniformToFill" /> <Image Source="/Images/screen3.jpg" Stretch ="UniformToFill" /> </StackPanel> </Canvas>
一般来说,最后一页面中的按钮和前面不同,可以通过 SlidePageIndex 来区分。先将其声明为依赖属性,在view中通过converter来控制是否显示
public static readonly DependencyProperty SlidePageIndexProperty = DependencyProperty.Register("SlidePageIndex", typeof(int), typeof(StartScreenView), null); public int SlidePageIndex { get { return (int)GetValue(SlidePageIndexProperty); } set { SetValue(SlidePageIndexProperty, value); } }
偏移量根据不同设备决定
_uniformImageWidth = (int)Application.Current.Host.Content.ActualWidth;
手势控制
Touch.FrameReported += Touch_FrameReported; TouchPanel.EnabledGestures = GestureType.HorizontalDrag;
private void Touch_FrameReported(object sender, TouchFrameEventArgs e) { try { TouchPoint mainTouch = e.GetPrimaryTouchPoint(this); if (mainTouch.Action == TouchAction.Down) first = mainTouch; else if (mainTouch.Action == TouchAction.Up && TouchPanel.IsGestureAvailable) { if (mainTouch.Position.X - first.Position.X < -DetectRightGesture) { if (SlidePageIndex == MaxSlidePageCount - 1) { NavigateToLoginPage(); } SlidePageIndex++; Slide(); } else if (mainTouch.Position.X - first.Position.X > DetectRightGesture) { if (SlidePageIndex == 0) return; SlidePageIndex--; Slide(); } } } catch { } }
滑动逻辑
private void Slide() { var storyboard = new Storyboard(); var ani = new DoubleAnimation(); ani.To = SlidePageIndex * -_uniformImageWidth; ani.Duration = TimeSpan.FromSeconds(1.0f); ani.EasingFunction = new ElasticEase() { EasingMode = EasingMode.EaseInOut, Oscillations = 0 }; Storyboard.SetTarget(ani, this.Slider); Storyboard.SetTargetProperty(ani, new PropertyPath("(Canvas.Left)")); storyboard.Children.Add(ani); storyboard.Begin(); }
此页面不可以通过back键导航??
protected override void OnNavigatedFrom(NavigationEventArgs e) { while (NavigationService.BackStack.Any()) { NavigationService.RemoveBackEntry(); } }
??
??

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











HTML은 간단하고 배우기 쉽고 결과를 빠르게 볼 수 있기 때문에 초보자에게 적합합니다. 1) HTML의 학습 곡선은 매끄럽고 시작하기 쉽습니다. 2) 기본 태그를 마스터하여 웹 페이지를 만들기 시작하십시오. 3) 유연성이 높고 CSS 및 JavaScript와 함께 사용할 수 있습니다. 4) 풍부한 학습 리소스와 현대 도구는 학습 과정을 지원합니다.

HTML은 웹 구조를 정의하고 CSS는 스타일과 레이아웃을 담당하며 JavaScript는 동적 상호 작용을 제공합니다. 세 사람은 웹 개발에서 의무를 수행하고 화려한 웹 사이트를 공동으로 구축합니다.

WebDevelopmentReliesonHtml, CSS 및 JavaScript : 1) HtmlStructuresContent, 2) CSSSTYLESIT, 및 3) JAVASCRIPTADDSINGINTERACTIVITY, BASISOFMODERNWEBEXPERIENCES를 형성합니다.

GiteEpages 정적 웹 사이트 배포 실패 : 404 오류 문제 해결 및 해결시 Gitee ...

anexampleStartingtaginhtmlis, whithbeginsaparagraph.startingtagsareessentialinhtmlastheyinitiate rements, definetheirtypes, andarecrucialforstructurituringwebpages 및 smanstlingthedom.

이미지를 클릭 한 후 주변 이미지를 산란 및 확대하는 효과를 얻으려면 많은 웹 디자인이 대화식 효과를 달성해야합니다. 특정 이미지를 클릭하여 주변을 만들 수 있습니다 ...

웹 주석 기능에 대한 Y 축 위치 적응 알고리즘이 기사는 Word 문서와 유사한 주석 기능을 구현하는 방법, 특히 주석 간격을 다루는 방법을 모색합니다 ...

HTML, CSS 및 JavaScript는 웹 개발의 세 가지 기둥입니다. 1. HTML은 웹 페이지 구조를 정의하고 등과 같은 태그를 사용합니다. 2. CSS는 색상, 글꼴 크기 등과 같은 선택기 및 속성을 사용하여 웹 페이지 스타일을 제어합니다.
