Windows Phone アプリに新機能を紹介するスタートアップ ページを追加_html/css_WEB-ITnose
オプション 1: パノラマまたはピボットページを使用します
1. パノラマ ページを全画面表示に書き換えます
2. タイトルとヘッダーを削除し、余白を調整します
public class PanoramaFullScreen : Panorama { protected override System.Windows.Size MeasureOverride(System.Windows.Size availableSize) { availableSize.Width += 48; return base.MeasureOverride(availableSize); } }
3. コードビハインドでの制御ページジャンプ
<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>
補足: パノラマメソッドを拡張してアニメーションでジャンプする
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(); } }
不十分な点:
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(); }
オプション 2:
すべての画像を横に並べ、ジェスチャーに応じて左右に移動して表示を制御します
SlideTransitionMode SlideTransitionMode支持动画有限,一般达不到预期效果
一般的に、最後のページのボタンは前のページのボタンとは異なり、SlidePageIndex によって区別できます。まず依存属性として宣言し、ビュー内のコンバーターを使用して
<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>
オフセットはデバイスごとに決定されます
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(); }
??
??

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









この記事では、HTML&lt; Progress&gt;について説明します。要素、その目的、スタイリング、および&lt; meter&gt;との違い要素。主な焦点は、&lt; Progress&gt;を使用することです。タスクの完了と&lt; Meter&gt; statiの場合

この記事では、HTML&lt; Datalist&GT;について説明します。オートコンプリートの提案を提供し、ユーザーエクスペリエンスの改善、エラーの削減によりフォームを強化する要素。

記事では、HTML5クロスブラウザーの互換性を確保するためのベストプラクティスについて説明し、機能検出、プログレッシブエンハンスメント、およびテスト方法に焦点を当てています。

この記事では、html&lt; meter&gt;について説明します。要素は、範囲内でスカラーまたは分数値を表示するために使用され、Web開発におけるその一般的なアプリケーション。それは差別化&lt; Meter&gt; &lt; Progress&gt;およびex

この記事では、html5&lt; time&gt;について説明します。セマンティックデート/時刻表現の要素。 人間の読み取り可能なテキストとともに、マシンの読みやすさ(ISO 8601形式)のDateTime属性の重要性を強調し、Accessibilitを増やします

この記事では、ブラウザのユーザー入力を直接検証するために、必要、パターン、MIN、MAX、および長さの制限などのHTML5フォーム検証属性を使用して説明します。

この記事では、モバイルデバイスのレスポンシブWebデザインに不可欠なViewportメタタグについて説明します。適切な使用により、最適なコンテンツのスケーリングとユーザーの相互作用が保証され、誤用が設計とアクセシビリティの問題につながる可能性があることを説明しています。

この記事では、&lt; iframe&gt;外部コンテンツをWebページ、その一般的な用途、セキュリティリスク、およびオブジェクトタグやAPIなどの代替案に埋め込む際のタグの目的。
