博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
聊聊大麦网UWP版的首页顶部图片联动效果的实现方法
阅读量:6212 次
发布时间:2019-06-21

本文共 4980 字,大约阅读时间需要 16 分钟。

原文:

随着Windows10的发布,国内已经有越来越多的厂商上架了自家的通用应用程序客户端,比如QQ、微博、大麦等。所实话,他们设计的确实很好,很符合Windows10 的设计风格和产品理念,而对于开发者而言,当我们发现一个不错的UI设计风格不禁想自己动手也写一个类似的效果玩玩。前几天在微软的开发者社区中逛的时候,看见有人问大麦网的UWP版首页顶部是如何实现的,于是自己就好奇的安装了一下,想看看是什么效果。效果图如下所示:

小白们有没有感觉有一种高大上的感觉呢?(当然我也是一个小白啦!!!!大牛勿喷!!)。。反正我感觉挺好看的,于是“就怪我喽!!!”地自己动手尝试去实现一下。记住:条条大路通罗马。对于开发这种事情来说,每个人都可以有自己的解决方案,只要能达到需求就是正确的!!!我现在分享一份我自己的设计方案来供新手朋友们学习借鉴。

 

首先,你可以使用3个FlipView控件来进行图片展示,如果仔细看的话,会发现左右两侧的布局有一种类似黑色的渐变色,所有我们可以把左右两侧的FlipView分别放到两个Grid中,然后将Grid中的背景色用黑色渐变的颜色来填充,具体的XAML代码如下所示:

 

1  
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 27
28
29
30
31
32
33
34
35 36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 55
56 57

 

其次,我们需要在对应的后台代码中为页面添加图片数据,你可以在页面的构造函数中添加,也可以在页面的Loaded事件中添加都是可以的,具体就要看你的需求了,我这里就直接加到页面的构造函数中。此外,你还要需要注意的是要保证这三个区域中的图片都不是相同的,这样我们可以利用FlipView对应的SelectedIndex属性来进行设置,具体代码你可以这样写:

1         public MainPage() 2         { 3             this.InitializeComponent(); 4             this.fvLeft.ItemsSource = this.fvCenter.ItemsSource = this.fvRight.ItemsSource = new ObservableCollection
() 5 { 6 new BitmapImage(new System.Uri("ms-appx:///Images/00.png",System.UriKind.RelativeOrAbsolute)), 7 new BitmapImage(new System.Uri("ms-appx:///Images/01.png",System.UriKind.RelativeOrAbsolute)), 8 new BitmapImage(new System.Uri("ms-appx:///Images/02.png",System.UriKind.RelativeOrAbsolute)) 9 };10 this.fvCenter.SelectedIndex = 0;11 this.fvLeft.SelectedIndex = this.fvLeft.Items.Count - 1;12 this.fvRight.SelectedIndex = this.fvCenter.SelectedIndex + 1;13 }

到目前为止,我们已经可以成功的将图片显示在界面上,但这是静态的,我们需要让它每隔一段时间进行翻动(我设置的是3秒一次,你随意),展示下一张,所以我们需要使用定时器来进行图片的定时轮番播放,示例代码如下所示:

1         protected override void OnNavigatedTo(NavigationEventArgs e) 2         { 3             DispatcherTimer timer = new DispatcherTimer(); 4             timer.Interval = new System.TimeSpan(0, 0, 3); 5             timer.Tick += (sender, args) => 6             { 7                 this.fvCenter.SelectedIndex = this.fvCenter.SelectedIndex < this.fvCenter.Items.Count - 1 ? ++this.fvCenter.SelectedIndex : 0; 8             }; 9             timer.Start();10         }

代码写到这了,你或许很激动的运行一下你的程序看一下效果,但是你会发现一个很尴尬的事情:我们要求这三种图片始终不一样,但是当我们人为地去改变中间的FlipView的选中项的话,总会有图片显示的是一样的,这并不是我们想要的效果。所以我们需要解决它,你可以有很多方法来解决它,我这里是用中间区域的FlipView对应的SelectionChanged事件来监听三张图片是否一样,如果一样的话,我让左侧的FlipView选中项是中间区域FlipView选中项-1;右侧的的FlipView选中项是中间区域FlipView选中项+1;人为地去改变左右两侧的图片。我是这样处理的:

1         private void fvCenter_SelectionChanged(object sender, SelectionChangedEventArgs e) 2         { 3             if (this.fvCenter.SelectedIndex == 0) 4             { 5                 this.fvLeft.SelectedIndex = this.fvLeft.Items.Count - 1; 6                 this.fvRight.SelectedIndex = 1; 7             } 8             else if (this.fvCenter.SelectedIndex == 1) 9             {10                 this.fvLeft.SelectedIndex = 0;11                 this.fvRight.SelectedIndex = this.fvRight.Items.Count - 1;12             }13             else if (this.fvCenter.SelectedIndex == this.fvCenter.Items.Count - 1)14             {15                 this.fvLeft.SelectedIndex = this.fvLeft.Items.Count - 2;16                 this.fvRight.SelectedIndex = 0;17             }18             else if ((this.fvCenter.SelectedIndex < (this.fvCenter.Items.Count - 1)) && this.fvCenter.SelectedIndex > -1)19             {20                 this.fvLeft.SelectedIndex = this.fvCenter.SelectedIndex - 1;21                 this.fvRight.SelectedIndex = this.fvCenter.SelectedIndex + 1;22             }23             else24             {25                 return;26             }27             Debug.Write(this.fvLeft.SelectedIndex);28         }

 写到这,再运行一下你程序,看看效果,是不是和大麦UWP版的首页顶部显示效果已经一个样儿了,希望如此!!!!

示例代码:

 

转载地址:http://zhdja.baihongyu.com/

你可能感兴趣的文章
聊聊微软刚发布的区块链去中心化身份识别系统DID
查看>>
从 Auto Layout 的布局算法谈性能
查看>>
学了这么久,vue和微信小程序到底有什么样的区别?
查看>>
数据运营实战(四)——男性女性,到底谁的购买率高?
查看>>
比特币的区块结构解析
查看>>
非功能性需求,不要成为项目的坑
查看>>
深入Weex系列(一)之Weex入门准备
查看>>
Swift4 0版 H5页面实现长按保存图片
查看>>
Vue教程00:MVC、MVP、MVVM模式的区别,服务端渲染与客户端渲染的区别
查看>>
系统优化总结——系统层面
查看>>
故事 | 一场发生在AI实验室的离奇血案
查看>>
支付宝防并发方案之"一锁二判三更新"
查看>>
Vue2.x源码解析系列七:深入Compiler理解render函数的生成过程
查看>>
使用 D8 分析 javascript 如何被 V8 引擎优化的
查看>>
理解ARP协议
查看>>
计算机程序的思维逻辑 (81) - 并发同步协作工具
查看>>
前端每周清单第 45 期: Safari 支持 Service Worker, Parcel 完整教程, 2017 前端大事件...
查看>>
Envoy 快速入门
查看>>
你真的懂JavaScript的正则吗?
查看>>
Python OJ 从入门到入门基础练习 10 题
查看>>