windows phone制作引导页
适用于WP7 WP8+
源码下载撸这里
制作动画gif小软件下载
小技巧
①图片是纯色背景:将页面设置跟图片背景一样颜色
②图片是渐变or其他,切图时候:单独切背景(页面设置这个为背景)跟图片里面元素(透明背景)
1、Pivot控件(代码在下载包里面)
先看效果
毫无疑问,图片过度之间动画效果太差,不能满足哥要求。。。
2、panroma也称为全景控件(代码在下载包里面)
相比pivot控件 图片切换之间有缝连接,给人感觉不会有那么空虚。可惜启动有个动画效果,因为这点哥把它抛弃了。
(找了大半天也没有办法将页面启动效果去掉,那位大牛知道不妨告诉小弟)
3、WPToolkit里面FlipView控件
地址下载:https://github.com/Kinnara/WPToolkit
因为一个小功能,引用整个dll,你觉得有必要么?当然你没时间折腾,可以直接引用过来。
哥可能闲的蛋疼,今天花了一点点时间将里面FlipView控件提取出来
第一步:先拷贝整个FlipView,生成一下,看一下报错,把其他类也复制过来。
第二步:样式拷贝,WPToolkit所有样式都放在Themes/generic.xaml这个文件里面,按下Ctrl+F 输入FlipView看看有那些样式全部拷贝过来
(注意:样式必须放在你自己项目这个目录下Themes/generic.xaml,程序才能自动调用)
如果不是这个目录,请手动引用这个样式
第三步:
新建一个Demo测试
<phone:PhoneApplicationPage x:Class= "Test.FlipViewTest" xmlns= "http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x= "http://schemas.microsoft.com/winfx/2006/xaml" xmlns:phone= "clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" xmlns:shell= "clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone" xmlns:local= "clr-namespace:Microsoft.Phone.Controls;assembly=LYL.Control.FlipView" xmlns:d= "http://schemas.microsoft.com/expression/blend/2008" xmlns:mc= "http://schemas.openxmlformats.org/markup-compatibility/2006" FontFamily= "{StaticResource PhoneFontFamilyNormal}" FontSize= "{StaticResource PhoneFontSizeNormal}" Foreground= "{StaticResource PhoneForegroundBrush}" SupportedOrientations= "Portrait" Orientation= "Portrait" mc:Ignorable= "d" shell:SystemTray.IsVisible= "False" > <!--LayoutRoot 是包含所有页面内容的根网格--> <Grid x:Name= "LayoutRoot" Background= "#E3DFDC" > <local:FlipView> <local:FlipViewItem> <Image Source= "/Images/01.jpg" /> </local:FlipViewItem> <local:FlipViewItem> <Image Source= "/Images/02.jpg" /> </local:FlipViewItem> <local:FlipViewItem> <Image Source= "/Images/03.jpg" /> </local:FlipViewItem> <local:FlipViewItem> <Image Source= "/Images/04.jpg" /> </local:FlipViewItem> <local:FlipViewItem> <Border Margin= "0,0,0,0" Height= "800" Width= "480" > <Border.Background> <ImageBrush ImageSource= "/Images/05.jpg" /> </Border.Background> <Image Source= "/Images/startbutton.png" Width= "200" Margin= "0,590,0,0" /> </Border> </local:FlipViewItem> </local:FlipView> </Grid> </phone:PhoneApplicationPage> |
到这里真的没问题,当然不是了。这里还要进一步封装以便下次直接调用
直接上代码,哥就不罗嗦
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 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Markup; using System.Windows.Media.Imaging; namespace Microsoft.Phone.Controls { public class FlipViewHelper { /// <summary> /// 数据源 /// </summary> public List<FlipViewModel> Data { get ; set ; } /// <summary> /// 最后一张图片的开始体验按钮 /// </summary> public string StartSource { get ; set ; } public Action FlipLastClick; public void Show(Panel el) { var flip = new FlipView(); for ( int i = 0; i < Data.Count; i++) { var xml = " <Border xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" Margin=\"0,0,0,0\" Height=\"800\" Width=\"480\">" + "<Border.Background>" + "<ImageBrush ImageSource=\"{0}\" />" + "</Border.Background>" // + " <Image Source=\"{4}\" Width=\"{1}\" Margin=\"0,{2},0,0\" Visibility=\"{3}\" />" + " </Border>" ; xml = string .Format(xml, Data[i].ImageSource); var border = XamlReader.Load(xml) as Border; if (border != null && i == Data.Count - 1) { BitmapImage bit = new BitmapImage(); bit.UriSource = new Uri(StartSource, UriKind.Relative); var image = new Image { Source = bit, Width = Data[i].StartWidth, Margin = new Thickness(0, Data[i].StartMarginTop, 0, 0), }; //开始体验按钮点击事件 image.Tag += (s1, e1) => { if (FlipLastClick != null ) { FlipLastClick(); } }; border.Child = image; } var item = new FlipViewItem(); item.Content = border; flip.Items.Add(item); } el.Children.Add(flip); } } public class FlipViewModel { public string ImageSource { get ; set ; } private int _startWidth = 200; public int StartWidth { get { return _startWidth; } set { _startWidth = value; } } private double _startMarginTop = 590; public double StartMarginTop { get { return _startMarginTop; } set { _startMarginTop = value; } } } } |
使用: 引用DLL,下载地址https://files.cnblogs.com/walleyekneel/LYL.Control.FlipView.rar
var flip = new FlipViewHelper(); flip.Data = new List<FlipViewModel> { new FlipViewModel{ ImageSource= "/Images/01.jpg" }, new FlipViewModel{ ImageSource= "/Images/02.jpg" }, new FlipViewModel{ ImageSource= "/Images/03.jpg" }, new FlipViewModel{ ImageSource= "/Images/04.jpg" }, new FlipViewModel{ ImageSource= "/Images/05.jpg" }, }; flip.StartSource = "/Images/startbutton.png" ; flip.FlipLastClick += () => { //TODO:跳转到某个页面 //保存一个值到独立存储,下次启动就不要new这个实例 }; flip.Show(LayoutRoot); |
所有源代码在开头已经放出下载地址了
WP8.1自带有FlipView用法大同小异,下次再补充,先看世界杯去咯
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2013-07-05 分享职场心得《10》